From ec6d43aa07ee0e8faf34498057ebcfbb446aa015 Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期二, 16 七月 2024 09:21:51 +0800
Subject: [PATCH] feat: 代码重构
---
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/EvaluateMapper.xml | 111
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/WithdrawService.java | 89
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/MasterWorkerMapper.xml | 53
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataCateMapper.xml | 19
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RecoveryServePriceServiceImpl.java | 20
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluateInfoVO.java | 27
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/WithdrawClient.java | 191
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataCollectMapper.java | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/RecoveryServeRequest.java | 2
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataUserServiceImpl.java | 20
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountRequest.java | 35
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java | 17
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluateOrderInfoVO.java | 45
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml | 24
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java | 22
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java | 374 +
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataAddressServiceImpl.java | 20
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataOrderMapper.java | 18
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderEvaluateVO.java | 29
ruoyi-gateway/src/main/resources/bootstrap.yml | 14
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataOrderMapper.xml | 47
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/WorkerProcessServiceImpl.java | 1
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/Evaluate.java | 2
ruoyi-service/ruoyi-order/pom.xml | 191
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/OrderInfoVO.java | 2
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataGoodsMapper.xml | 20
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ChangeDispatch.java | 71
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByWorkerVO.java | 29
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/EvaluateService.java | 10
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByEvaluateVO.java | 31
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/WithdrawListVO.java | 5
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RotateController.java | 4
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ServeRecordClient.java | 27
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java | 11
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/WithdrawController.java | 88
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataAdvantage.java | 48
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderSubmitRequest.java | 22
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/EvaluateController.java | 70
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java | 5
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataDrawService.java | 16
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ServeRecordController.java | 44
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByUserInfoVO.java | 34
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java | 34
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/WithdrawOrderVO.java | 6
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WorkerOrderCountVO.java | 24
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataTransferMapper.xml | 18
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/RecoveryServe.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/EvaluateController.java | 189
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/WithdrawMapper.xml | 151
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataAdvantageMapper.xml | 14
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/OrderService.java | 73
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/WithdrawalSettingService.java | 16
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataDrawServiceImpl.java | 20
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Withdraw.java | 72
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RecoveryServeController.java | 112
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/UserService.java | 12
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ChangeDispatch.java | 71
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java | 108
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ServeCoordinateClient.java | 31
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataGoodsService.java | 16
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/RecoveryServePriceMapper.java | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataUser.java | 61
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/EvaluateMapper.java | 53
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataCateMapper.java | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/sorcket/WebSocketServer.java | 5
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/OrderController.java | 116
ruoyi-service/ruoyi-admin/pom.xml | 5
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OrderController.java | 261
ruoyi-auth/src/main/resources/bootstrap.yml | 10
ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_cert.p12 | 0
ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_key.pem | 28
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByServeVO.java | 33
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataQuestionMapper.xml | 14
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataOrder.java | 178
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawDetailVO.java | 97
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/Withdraw.java | 2
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/ServeCoordinate.java | 36
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/OrderMapper.xml | 328 -
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataGoodsMapper.java | 18
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/utils/TencentCosUtil.java | 108
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/WithdrawService.java | 12
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawExportRequest.java | 31
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java | 186
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVO.java | 29
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java | 115
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/config/MyDateObjectHandler.java | 13
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderListVO.java | 9
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryServe.java | 12
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/config/CosClientConfig.java | 51
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataTechnicianServiceImpl.java | 20
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ServeCoordinateMapper.xml | 20
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataMessageService.java | 16
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluatePageVO.java | 78
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/MasterWorkerServiceImpl.java | 101
ruoyi-modules/ruoyi-system/pom.xml | 6
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataMessageServiceImpl.java | 20
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataTransferMapper.java | 18
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawReturnVO.java | 21
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/HomePageController.java | 15
ruoyi-api/ruoyi-api-order/pom.xml | 38
ruoyi-api/ruoyi-api-order/.gitignore | 33
ruoyi-service/ruoyi-user/src/main/resources/mapper/user/EvaluateMapper.xml | 15
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/NoticesController.java | 13
ruoyi-service/pom.xml | 1
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java | 5
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/UserServiceImpl.java | 36
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/WithdrawalSettingMapper.java | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataAddressMapper.java | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MasterWorkerServiceImpl.java | 52
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java | 2
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataUserMapper.xml | 15
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/UserWithdrawRecordVO.java | 72
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java | 51
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ServeCoordinateServiceImpl.java | 20
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/WithdrawController.java | 33
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/EvaluateServiceImpl.java | 37
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java | 4
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/UserRecipient.java | 4
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 396 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ServeRecord.java | 42
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataTechnicianMapper.xml | 23
ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/feignClient/AdminClient.java | 52
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/OrderByServeRecordVO.java | 2
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/ServeRecord.java | 4
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/EvaluateMapper.java | 10
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/LoginPhoneRequest.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/WithdrawalSettingServiceImpl.java | 20
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/HttpRequest.java | 188
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/Evaluate.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/MyDateObjectHandler.java | 42
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderCountVO.java | 34
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataCollectService.java | 16
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataGoods.java | 72
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataQuestion.java | 48
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderCountRequest.java | 35
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java | 575 ++
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java | 109
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderQueryRequest.java | 64
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderDetailVO.java | 31
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataDrawMapper.xml | 13
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChangeDispatchServiceImpl.java | 20
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataCate.java | 68
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderResultVO.java | 36
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MoneyQueryRequest.java | 19
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstants.java | 5
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java | 169
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java | 5
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/HomePageInfoVO.java | 5
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataMessageMapper.xml | 14
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderPageCountVO.java | 48
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/SendSmsController.java | 62
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataQuestionMapper.java | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataQuestionService.java | 16
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataMessageMapper.java | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataCateService.java | 16
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawListVO.java | 22
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/WeChatUtil.java | 507 +
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java | 81
ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/factory/AdminFallbackFactory.java | 25
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java | 13
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/SendSmsServiceImpl.java | 2
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/config/MyDateObjectHandler.java | 2
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/EvaluateController.java | 27
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/RecoveryServe.java | 2
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderResultVO.java | 36
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawOrderVO.java | 40
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluatePageVO.java | 78
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/SysUserController.java | 52
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/WithdrawFallbackFactory.java | 99
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderRequest.java | 106
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataCollectMapper.xml | 13
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/WithdrawService.java | 99
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/EvaluateServiceImpl.java | 7
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/WithdrawExportRequest.java | 31
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 326 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ServeRecordMapper.java | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataCateServiceImpl.java | 20
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/RuoyiOrderApplication.java | 26
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryClassify.java | 10
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/MasterWorkerMapper.java | 11
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java | 192
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ExchangeDispatchFallbackFactory.java | 65
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/WorkerProcess.java | 4
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/UserServeTypeVO.java | 36
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/UserWithdrawRecordVO.java | 72
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/MasterWorkerService.java | 20
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java | 153
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/MasterWorkerMapper.java | 8
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderRequest.java | 106
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataUserService.java | 16
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java | 95
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataUserMapper.java | 18
ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml | 24
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/OrderQueryRequest.java | 1
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/OrderEvaluateRequest.java | 9
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WorkerOrderCountVO.java | 24
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MasterWorkerController.java | 27
ruoyi-service/ruoyi-worker/src/main/resources/bootstrap.yaml | 6
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryServePrice.java | 44
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/utils/changeChinesePinyinUtil.java | 161
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataAddress.java | 69
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataTechnicianMapper.java | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataOrderService.java | 16
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java | 4
ruoyi-service/ruoyi-worker/pom.xml | 6
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataDrawMapper.java | 18
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/OrderDetailVO.java | 8
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ServeRecordService.java | 16
ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yaml | 41
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/MoneyQueryRequest.java | 23
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ServeCoordinate.java | 52
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/WithdrawServiceImpl.java | 182
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataTransferServiceImpl.java | 20
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OssController.java | 14
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/UserCollectService.java | 7
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/PolylineData.java | 2
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/MasterWorkerService.java | 3
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageCountVO.java | 45
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderQueryRequest.java | 63
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataGoodsServiceImpl.java | 20
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/UserCollectMapper.java | 8
ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/entity/Rotate.java | 4
ruoyi-service/ruoyi-admin/src/main/resources/bootstrap.yaml | 10
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataAddressService.java | 16
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ChangeDispatchMapper.java | 18
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ServeCoordinateMapper.java | 18
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/AppConfig.java | 42
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserRecipientController.java | 44
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/EvaluateClient.java | 115
ruoyi-service/ruoyi-order/src/main/resources/logback.xml | 74
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/WithdrawalSetting.java | 33
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/WithdrawController.java | 322 +
ruoyi-service/ruoyi-user/pom.xml | 23
ruoyi-service/ruoyi-order/src/main/resources/mybatis-config.xml | 26
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderSubmitRequest.java | 22
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderQueryVO.java | 27
ruoyi-api/pom.xml | 1
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/MybatisPlusConfig.java | 43
ruoyi-service/ruoyi-order/.gitignore | 33
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/HttpUtil.java | 195
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataAdvantageMapper.java | 18
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderEvaluateSubmitRequest.java | 40
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/RoleServiceImpl.java | 1
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataTechnicianService.java | 16
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/EvaluateService.java | 48
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataMessage.java | 48
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java | 267
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RegionServiceImpl.java | 86
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataTransfer.java | 65
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserCollectController.java | 21
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/GeneratorCodeConfig.java | 4
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OssController.java | 26
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/SysUser.java | 4
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ServeCoordinate.java | 69
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataCollect.java | 44
ruoyi-service/ruoyi-user/src/main/resources/mapper/user/RecoveryServePriceMapper.xml | 18
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderEvaluateSubmitRequest.java | 43
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ServeRecordMapper.xml | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataDraw.java | 42
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java | 165
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ServeRecordFallbackFactory.java | 24
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RecoveryServeController.java | 22
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluateInfoVO.java | 27
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountVO.java | 34
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/UserOrderRequest.java | 64
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/UserManageController.java | 104
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/WorkerProcessController.java | 17
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ServeCoordinateService.java | 16
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataAdvantageService.java | 16
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/SysUserMapper.xml | 5
ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataAddressMapper.xml | 19
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/WithdrawalSettingMapper.xml | 11
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderQueryVO.java | 27
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/RegionService.java | 7
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawReturnVO.java | 21
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WorkerOrderRankVO.java | 17
ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/MasterWorkerMapper.xml | 8
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/OrderRequest.java | 3
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderEvaluateVO.java | 26
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataCollectServiceImpl.java | 20
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/UserOrderRequest.java | 64
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/WithdrawServiceImpl.java | 191
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ServeCoordinateFallbackFactory.java | 26
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataOrderServiceImpl.java | 20
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/MasterWorkerController.java | 78
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ServeRecord.java | 42
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Order.java | 165
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OldDataController.java | 372 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WorkerOrderRankVO.java | 17
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawalSetting.java | 34
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawDetailVO.java | 97
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Evaluate.java | 58
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/WithdrawMapper.java | 93
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/OrderService.java | 9
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/OrderMapper.java | 242
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ServeRecordServiceImpl.java | 20
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserInfo.java | 9
ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/entity/ChangeDispatch.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawMoneyVO.java | 30
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/WechatPayV3Util.java | 113
ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 6
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/OrderServiceImpl.java | 215
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RecoveryClassifyController.java | 7
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Evaluate.java | 58
ruoyi-service/ruoyi-user/src/main/resources/bootstrap.yaml | 6
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/PasswordRequest.java | 38
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataAdvantageServiceImpl.java | 20
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluateOrderInfoVO.java | 45
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/WorkerProcess.java | 4
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByServeRecordVO.java | 33
ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_cert.pem | 25
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/RecoveryServePriceService.java | 16
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Withdraw.java | 64
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/PrizeController.java | 19
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataTechnician.java | 84
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataQuestionServiceImpl.java | 20
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ServeCoordinateController.java | 49
/dev/null | 18
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/SendSmsService.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ChangeDispatchService.java | 16
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataTransferService.java | 16
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/ServeCoordinate.java | 26
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java | 133
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ExchangeDispatchClient.java | 118
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/RuoyiApiOrderApplication.java | 13
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserCollectServiceImpl.java | 8
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/request/OrderSubmitRequest.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/WithdrawServiceImpl.java | 288 +
ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java | 5
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RegionController.java | 21
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/EvaluateFallbackFactory.java | 66
ruoyi-common/ruoyi-common-core/pom.xml | 11
ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/WxAesUtils.java | 112
334 files changed, 14,959 insertions(+), 2,078 deletions(-)
diff --git a/ruoyi-api/pom.xml b/ruoyi-api/pom.xml
index 1a56ba7..d1a9f27 100644
--- a/ruoyi-api/pom.xml
+++ b/ruoyi-api/pom.xml
@@ -13,6 +13,7 @@
<module>ruoyi-api-user</module>
<module>ruoyi-api-worker</module>
<module>ruoyi-api-admin</module>
+ <module>ruoyi-api-order</module>
</modules>
<artifactId>ruoyi-api</artifactId>
diff --git a/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/entity/ChangeDispatch.java b/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/entity/ChangeDispatch.java
index 08f5b10..d62f79c 100644
--- a/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/entity/ChangeDispatch.java
+++ b/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/entity/ChangeDispatch.java
@@ -54,7 +54,7 @@
@ApiModelProperty("订单id")
@TableField("order_id")
- private Integer orderId;
+ private String orderId;
@ApiModelProperty("订单编号")
@TableField("order_number")
diff --git a/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/entity/Rotate.java b/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/entity/Rotate.java
index 3c6f676..3fd0d00 100644
--- a/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/entity/Rotate.java
+++ b/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/entity/Rotate.java
@@ -42,4 +42,8 @@
@TableField("is_rotate")
private Integer isRotate;
+ @ApiModelProperty("服务类型")
+ @TableField(exist = false)
+ private Integer type;
+
}
diff --git a/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/factory/AdminFallbackFactory.java b/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/factory/AdminFallbackFactory.java
index 742e08c..aed9090 100644
--- a/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/factory/AdminFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/factory/AdminFallbackFactory.java
@@ -28,18 +28,13 @@
}
@Override
- public R<Boolean> changeDispatchSave(ChangeDispatch changeDispatch) {
- return R.fail(Boolean.FALSE);
- }
-
- @Override
- public R<ChangeDispatch> changeDispatchOne(Integer id) {
- return R.fail("获取订单改派详情失败" + cause.getMessage());
- }
-
- @Override
public R<List<Notices>> noticesList() {
return R.fail("获取通知公告列表失败" + cause.getMessage());
+ }
+
+ @Override
+ public R<Notices> noticesDetail(Integer id) {
+ return R.fail(cause.getMessage());
}
@Override
@@ -63,10 +58,20 @@
}
@Override
+ public R<Prize> prizeDetail(String id) {
+ return R.fail("获取奖品详情失败" + cause.getMessage());
+ }
+
+ @Override
public R<WithdrawalSetting> withdrawProcess() {
return R.fail("获取系统审核设置失败" + cause.getMessage());
}
+ @Override
+ public R<List<String>> cityDetail(Integer id) {
+ return R.fail(cause.getMessage());
+ }
+
};
}
}
diff --git a/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/feignClient/AdminClient.java b/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/feignClient/AdminClient.java
index fede35e..01d529e 100644
--- a/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/feignClient/AdminClient.java
+++ b/ruoyi-api/ruoyi-api-admin/src/main/java/com/ruoyi/admin/api/feignClient/AdminClient.java
@@ -4,10 +4,9 @@
import com.ruoyi.admin.api.factory.AdminFallbackFactory;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
+import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -38,30 +37,23 @@
R<Agreement> dataInfo(@RequestParam("type") Integer type);
/**
- * 新增订单改派
- *
- * @param changeDispatch 改派信息
- * @return 详细数据
- */
- @PostMapping(value = "/changeDispatch/changeDispatchSave")
- R<Boolean> changeDispatchSave(@RequestBody ChangeDispatch changeDispatch);
-
- /**
- * 订单改派详情
- *
- * @param id 订单id
- * @return 改派订单
- */
- @GetMapping(value = "/changeDispatch/changeDispatchOne")
- R<ChangeDispatch> changeDispatchOne(@RequestParam("id") Integer id);
-
- /**
* 系统通知列表
*
* @return 通知公告列表
*/
- @GetMapping(value = "/notices/list")
+ @GetMapping(value = "/notices/noticesList")
R<List<Notices>> noticesList();
+
+ /**
+ * 系统通知详情
+ * -- 远程调用
+ *
+ * @param id 主键id
+ * @return 详情
+ */
+ @ApiOperation(value = "系统通知详情", tags = {"后台-系统设置-系统通知管理"})
+ @GetMapping(value = "/notices/noticesDetail")
+ R<Notices> noticesDetail(@RequestParam("id") Integer id);
/**
* 轮播图列表
@@ -96,6 +88,15 @@
R<List<Prize>> prizeList();
/**
+ * 奖品详情 -- 远程调用
+ *
+ * @param id 奖品id
+ * @return 详情
+ */
+ @GetMapping(value = "/prize/prizeDetail")
+ R<Prize> prizeDetail(@RequestParam("id") String id);
+
+ /**
* 修改系统设置-关闭/开启审核
*
* @return 操作结果
@@ -103,4 +104,13 @@
@GetMapping(value = "/userManage/withdrawProcess")
R<WithdrawalSetting> withdrawProcess();
+ /**
+ * 加盟商管辖城市详情
+ *
+ * @param id 加盟商信息id
+ * @return 加盟商管辖城市详情
+ */
+ @GetMapping(value = "/franchisee/cityDetail")
+ R<List<String>> cityDetail(@RequestParam("id") Integer id);
+
}
diff --git a/ruoyi-api/ruoyi-api-order/.gitignore b/ruoyi-api/ruoyi-api-order/.gitignore
new file mode 100644
index 0000000..549e00a
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/ruoyi-api/ruoyi-api-order/pom.xml b/ruoyi-api/ruoyi-api-order/pom.xml
new file mode 100644
index 0000000..8de14e6
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi</artifactId>
+ <version>3.6.4</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>ruoyi-api-order</artifactId>
+
+ <properties>
+ <maven.compiler.source>8</maven.compiler.source>
+ <maven.compiler.target>8</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+
+ <dependencies>
+
+ <!-- RuoYi Common Core-->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common-core</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>com.github.pagehelper</groupId>
+ <artifactId>pagehelper-spring-boot-starter</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/RuoyiApiOrderApplication.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/RuoyiApiOrderApplication.java
new file mode 100644
index 0000000..37013e0
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/RuoyiApiOrderApplication.java
@@ -0,0 +1,13 @@
+package com.ruoyi.order.api;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class RuoyiApiOrderApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(RuoyiApiOrderApplication.class, args);
+ }
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ChangeDispatch.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ChangeDispatch.java
new file mode 100644
index 0000000..9fde300
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ChangeDispatch.java
@@ -0,0 +1,71 @@
+package com.ruoyi.order.api.entity;
+
+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.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 改派管理
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("sys_change_dispatch")
+@ApiModel(value = "ChangeDispatch对象", description = "改派管理")
+public class ChangeDispatch extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("申请师傅")
+ @TableField("worker_id")
+ private Integer workerId;
+
+ @ApiModelProperty("申请师傅姓名")
+ @TableField("worker_name")
+ private String workerName;
+
+ @ApiModelProperty("申请原因")
+ @TableField("apply_reason")
+ private String applyReason;
+
+ @ApiModelProperty("申请改派时间")
+ @TableField("apply_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date applyTime;
+
+ @ApiModelProperty("改派状态 (0:未改派 ;1:已改派 ;2:拒绝)")
+ @TableField("state")
+ private Integer state;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+ @ApiModelProperty("订单编号")
+ @TableField("order_number")
+ private String orderNumber;
+
+ @ApiModelProperty("下单用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ @ApiModelProperty("下单用户名称")
+ @TableField("user_name")
+ private String userName;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Evaluate.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Evaluate.java
new file mode 100644
index 0000000..c6008be
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Evaluate.java
@@ -0,0 +1,58 @@
+package com.ruoyi.order.api.entity;
+
+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.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 用户评价表
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("t_evaluate")
+@ApiModel(value = "Evaluate对象", description = "用户评价表")
+public class Evaluate extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ @ApiModelProperty("用户手机号")
+ @TableField("user_phone")
+ private String userPhone;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+ @ApiModelProperty("评价内容")
+ @TableField("content")
+ private String content;
+
+ @ApiModelProperty("评价师傅id")
+ @TableField("worker_id")
+ private Integer workerId;
+
+ @ApiModelProperty("评价星级")
+ @TableField("star_rating")
+ private Double starRating;
+
+ @ApiModelProperty("服务单号")
+ @TableField("serve_no")
+ private String serveNo;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluateInfoVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluateInfoVO.java
new file mode 100644
index 0000000..1d25e28
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluateInfoVO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.order.api.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 9:59
+ */
+@Data
+public class EvaluateInfoVO {
+
+ @ApiModelProperty("评价内容")
+ private String content;
+
+ @ApiModelProperty("评价星级")
+ private Integer starRating;
+
+ @ApiModelProperty("评价时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date evaluateTime;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluateOrderInfoVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluateOrderInfoVO.java
new file mode 100644
index 0000000..5c281c3
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluateOrderInfoVO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.order.api.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 9:54
+ */
+@Data
+public class EvaluateOrderInfoVO {
+
+ @ApiModelProperty("订单id")
+ private String orderId;
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("回收服务名称")
+ private String serveName;
+
+ @ApiModelProperty("服务描述")
+ private String serveDescribe;
+
+ @ApiModelProperty("封面图片")
+ private String cover;
+
+ @ApiModelProperty("服务人员名称")
+ private String serverName;
+
+ @ApiModelProperty("服务人员手机号")
+ private String serverPhone;
+
+ @ApiModelProperty("订单完成时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date completeTime;
+
+ @ApiModelProperty("回收服务id")
+ private Integer serveId;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluatePageVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluatePageVO.java
new file mode 100644
index 0000000..bded0e4
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/EvaluatePageVO.java
@@ -0,0 +1,78 @@
+package com.ruoyi.order.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-01 12:57
+ */
+@Data
+public class EvaluatePageVO {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ @ApiModelProperty("用户手机号")
+ @TableField("user_phone")
+ private String userPhone;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+ @ApiModelProperty("评价内容")
+ @TableField("content")
+ private String content;
+
+ @ApiModelProperty("评价师傅id")
+ @TableField("worker_id")
+ private Integer workerId;
+
+ @ApiModelProperty("评价星级")
+ @TableField("star_rating")
+ private Double starRating;
+
+ @ApiModelProperty("服务单号")
+ @TableField("serve_no")
+ private String serveNo;
+
+ @TableField("createBy")
+ private String createBy;
+
+ @TableField("updateBy")
+ private String updateBy;
+
+ @TableField("createTime")
+ private Date createTime;
+
+ @TableField("updateTime")
+ private Date updateTime;
+
+ @ApiModelProperty("是否删除 0未删除;1已删除")
+ @TableField("is_delete")
+ private Integer isDelete;
+
+ @ApiModelProperty("用户ID(昵称)")
+ private String userNo;
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("师傅姓名")
+ private String workerName;
+
+ @ApiModelProperty("师傅电话")
+ private String workerPhone;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/MoneyQueryRequest.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/MoneyQueryRequest.java
new file mode 100644
index 0000000..21d6a84
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/MoneyQueryRequest.java
@@ -0,0 +1,23 @@
+package com.ruoyi.order.api.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-08 18:45
+ */
+@Data
+public class MoneyQueryRequest {
+
+ private List<String> cityList;
+
+ private String type;
+
+ public MoneyQueryRequest(List<String> cityList, String type) {
+ this.cityList = cityList;
+ this.type = type;
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Order.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Order.java
new file mode 100644
index 0000000..b4116ba
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Order.java
@@ -0,0 +1,165 @@
+package com.ruoyi.order.api.entity;
+
+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.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 订单管理
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-05-29
+ */
+@Getter
+@Setter
+@TableName("t_order")
+@ApiModel(value = "Order对象", description = "订单管理")
+public class Order extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private String id;
+
+ @ApiModelProperty("下单城市")
+ @TableField("city")
+ private String city;
+
+ @ApiModelProperty("订单编号")
+ @TableField("order_number")
+ private String orderNumber;
+
+ @ApiModelProperty("下单用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ @ApiModelProperty("站点id")
+ @TableField("site_id")
+ private Integer siteId;
+
+ @ApiModelProperty("站点名称")
+ @TableField("site_name")
+ private String siteName;
+
+ @ApiModelProperty("回收服务id")
+ @TableField("serve_id")
+ private Integer serveId;
+
+ @ApiModelProperty("回收服务名称")
+ @TableField("serve_name")
+ private String serveName;
+
+ @ApiModelProperty("回收服务回收价")
+ @TableField("serve_price")
+ private BigDecimal servePrice;
+
+ @ApiModelProperty("订单成交价(服务回收价 + 津贴)")
+ @TableField("order_money")
+ private BigDecimal orderMoney;
+
+ @ApiModelProperty("预约姓名")
+ @TableField("reservation_name")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ @TableField("reservation_phone")
+ private String reservationPhone;
+
+ @ApiModelProperty("预约地址")
+ @TableField("reservation_address")
+ private String reservationAddress;
+
+ @ApiModelProperty("上门时间段")
+ @TableField("time")
+ private String time;
+
+ @ApiModelProperty("接单时间(师傅接单或后台派单,更新该字段时间)")
+ @TableField("accept_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date acceptTime;
+
+ @ApiModelProperty("服务人员id")
+ @TableField("server_id")
+ private Integer serverId;
+
+ @ApiModelProperty("服务人员名称")
+ @TableField("server_name")
+ private String serverName;
+
+ @ApiModelProperty("服务人员手机号")
+ @TableField("server_phone")
+ private String serverPhone;
+
+ @ApiModelProperty("预约备注")
+ @TableField("reservation_remark")
+ private String reservationRemark;
+
+ @ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派,6:待改派)")
+ @TableField("state")
+ private Integer state;
+
+ @ApiModelProperty("师傅到达预约地点时间")
+ @TableField("arrive_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date arriveTime;
+
+ @ApiModelProperty("订单类型(0:正常订单,1:后台订单(后台订单与用户端、师傅端无联系))")
+ @TableField("type")
+ private Integer type;
+
+ @ApiModelProperty("下单用户经度")
+ @TableField("longitude")
+ private Double longitude;
+
+ @ApiModelProperty("下单用户纬度")
+ @TableField("latitude")
+ private Double latitude;
+
+ @ApiModelProperty("订单完成时间")
+ @TableField("complete_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date completeTime;
+
+ @ApiModelProperty("订单补贴金额")
+ @TableField("subsidy")
+ private BigDecimal subsidy;
+
+ @ApiModelProperty("是否已提现(0:未提现,1:已提现)")
+ @TableField("is_withdrawal")
+ private Integer isWithdrawal;
+
+ @ApiModelProperty("详细地址")
+ @TableField("address")
+ private String address;
+
+ @ApiModelProperty("订单取消原因")
+ @TableField("cancel_reason")
+ private String cancelReason;
+
+ @ApiModelProperty("置顶顺序")
+ @TableField("top_sort")
+ private Integer topSort;
+
+ @ApiModelProperty("回收服务封面图")
+ @TableField(exist = false)
+ private String cover;
+
+ @ApiModelProperty("再投原因")
+ @TableField(exist = false)
+ private String applyReason;
+
+ @ApiModelProperty("是否为再投单")
+ @TableField("is_reinvest")
+ private Integer isReinvest;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderCountRequest.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderCountRequest.java
new file mode 100644
index 0000000..4c2b82e
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderCountRequest.java
@@ -0,0 +1,35 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-30 15:42
+ */
+@Data
+@ApiModel(value = "orderCount对象", description = "回收订单统计返回类")
+public class OrderCountRequest {
+
+ @ApiModelProperty("所选城市id集合")
+ private List<String> cityList;
+
+ @ApiModelProperty("查询订单状态(全部订单:该字段不传值;其他状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派))")
+ private Integer orderState;
+
+ @ApiModelProperty("统计类型(全年:year;本月:month;本周:week;今日:today)")
+ @NotBlank(message = "请选择:统计类型!")
+ private String countType;
+
+ @ApiModelProperty("开始日期(yyyy-MM-dd格式)")
+ private String startTime;
+
+ @ApiModelProperty("结束日期(yyyy-MM-dd格式)")
+ private String endTime;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderCountVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderCountVO.java
new file mode 100644
index 0000000..02035c7
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderCountVO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 17:37
+ */
+@Data
+@ApiModel(value = "OrderCountVO对象", description = "订单统计返回类")
+public class OrderCountVO {
+
+ @ApiModelProperty("师傅id")
+ private Integer workerId;
+
+ @ApiModelProperty("真实姓名")
+ private String realName;
+
+ @ApiModelProperty("头像")
+ private String profilePicture;
+
+ @ApiModelProperty("待完工数量")
+ private Integer toBeCompletedNumber;
+
+ @ApiModelProperty("已完工数量")
+ private Integer completedNumber;
+
+ @ApiModelProperty("再投单数量")
+ private Integer reInvestment;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderDetailVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderDetailVO.java
new file mode 100644
index 0000000..d5b3151
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderDetailVO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-06 14:16
+ */
+@Data
+public class OrderDetailVO {
+
+ @ApiModelProperty("订单信息")
+ private Order orderInfo;
+
+ @ApiModelProperty("服务信息")
+ private ServeRecord serveInfo;
+
+ @ApiModelProperty("评价信息")
+ private Evaluate evaluateInfo;
+
+ public OrderDetailVO() {
+ }
+
+ public OrderDetailVO(Order orderInfo, ServeRecord serveInfo, Evaluate evaluateInfo) {
+ this.orderInfo = orderInfo;
+ this.serveInfo = serveInfo;
+ this.evaluateInfo = evaluateInfo;
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderEvaluateSubmitRequest.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderEvaluateSubmitRequest.java
new file mode 100644
index 0000000..b884db6
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderEvaluateSubmitRequest.java
@@ -0,0 +1,40 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 11:14
+ */
+@Data
+public class OrderEvaluateSubmitRequest {
+
+ @ApiModelProperty("订单id")
+ @NotNull(message = "请选择评价订单!")
+ private Long orderId;
+
+ @ApiModelProperty("评价内容")
+ private String content;
+
+ @ApiModelProperty("评价星级")
+ @NotNull(message = "请选择评价星级!")
+ private Double starRating;
+
+ @ApiModelProperty("服务单号")
+ private String serveNo;
+
+ @ApiModelProperty("用户id")
+ private Integer userId;
+
+ public OrderEvaluateSubmitRequest(Long orderId, String content, Double starRating, String serveNo, Integer userId) {
+ this.orderId = orderId;
+ this.content = content;
+ this.starRating = starRating;
+ this.serveNo = serveNo;
+ this.userId = userId;
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderEvaluateVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderEvaluateVO.java
new file mode 100644
index 0000000..f5949f8
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderEvaluateVO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 9:53
+ */
+@Data
+public class OrderEvaluateVO {
+
+ @ApiModelProperty("订单信息")
+ private EvaluateOrderInfoVO orderInfo;
+
+ @ApiModelProperty("评价信息")
+ private EvaluateInfoVO evaluateInfo;
+
+ @ApiModelProperty("回收服务id")
+ private Integer serveId;
+
+ @ApiModelProperty("是否还未评价")
+ private Boolean evaluate;
+
+ public Boolean getEvaluate() {
+ return null != evaluateInfo;
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderPageCountVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderPageCountVO.java
new file mode 100644
index 0000000..e44da29
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderPageCountVO.java
@@ -0,0 +1,48 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-28 16:13
+ */
+@Data
+public class OrderPageCountVO {
+
+ @ApiModelProperty("全部订单")
+ private Integer total;
+
+ @ApiModelProperty("待派单")
+ private Integer toBeDispatched;
+
+ @ApiModelProperty("待上门")
+ private Integer stayDoorstep;
+
+ @ApiModelProperty("待完成")
+ private Integer toBeCompleted;
+
+ @ApiModelProperty("已完成")
+ private Integer completed;
+
+ @ApiModelProperty("已取消")
+ private Integer canceled;
+
+ @ApiModelProperty("再投订单")
+ private Integer reInvestment;
+
+ public OrderPageCountVO() {
+ }
+
+ public OrderPageCountVO(Integer total, Integer toBeDispatched, Integer stayDoorstep, Integer toBeCompleted,
+ Integer completed, Integer canceled, Integer reInvestment) {
+ this.total = total;
+ this.toBeDispatched = toBeDispatched;
+ this.stayDoorstep = stayDoorstep;
+ this.toBeCompleted = toBeCompleted;
+ this.completed = completed;
+ this.canceled = canceled;
+ this.reInvestment = reInvestment;
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderQueryRequest.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderQueryRequest.java
new file mode 100644
index 0000000..b9633a8
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderQueryRequest.java
@@ -0,0 +1,63 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 11:27
+ */
+@Data
+@ApiModel(value = "OrderQueryRequest对象", description = "订单列表 请求参数")
+public class OrderQueryRequest {
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("所属城市")
+ private String cityName;
+
+ @ApiModelProperty("预约姓名")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ private String reservationPhone;
+
+ @ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派,6:待改派)")
+ private Integer state;
+
+ @ApiModelProperty("师傅名称")
+ private String workerName;
+
+ @ApiModelProperty("师傅电话")
+ private String workerPhone;
+
+ @ApiModelProperty("下单开始时间")
+ private String orderTimeStart;
+
+ @ApiModelProperty("下单结束时间")
+ private String orderTimeEnd;
+
+ @ApiModelProperty("预约上门开始时间")
+ private String startTime;
+
+ @ApiModelProperty("预约上门结束时间")
+ private String endTime;
+
+ @ApiModelProperty("站点名称")
+ private String serveName;
+
+ @ApiModelProperty(value = "页码", required = true)
+ private Integer pageNum = 1;
+
+ @ApiModelProperty(value = "每页显示条数", required = true)
+ private Integer pageSize = 10;
+
+ @ApiModelProperty("导出ids集合")
+ private List<String> ids;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderQueryVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderQueryVO.java
new file mode 100644
index 0000000..71d50e7
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderQueryVO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-30 16:30
+ */
+@Data
+@ApiModel(value = "OrderQuery对象", description = "回收订单统计查询类")
+public class OrderQueryVO {
+
+ @ApiModelProperty("对应总金额")
+ private BigDecimal totalPrice;
+
+ @ApiModelProperty("时间日期")
+ private String dateTime;
+
+ @ApiModelProperty("订单数量")
+ private Integer number;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderRequest.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderRequest.java
new file mode 100644
index 0000000..7ea3ae3
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderRequest.java
@@ -0,0 +1,106 @@
+package com.ruoyi.order.api.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-08 15:27
+ */
+@Data
+public class OrderRequest {
+
+ @ApiModelProperty("下单城市")
+ private String city;
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("下单用户id")
+ private Integer userId;
+
+ @ApiModelProperty("站点id")
+ private Integer siteId;
+
+ @ApiModelProperty("站点名称")
+ private String siteName;
+
+ @ApiModelProperty("回收服务id")
+ private Integer serveId;
+
+ @ApiModelProperty("回收服务名称")
+ private String serveName;
+
+ @ApiModelProperty("回收服务回收价")
+ private BigDecimal servePrice;
+
+ @ApiModelProperty("订单成交价(服务回收价 + 津贴)")
+ private BigDecimal orderMoney;
+
+ @ApiModelProperty("预约姓名")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ private String reservationPhone;
+
+ @ApiModelProperty("预约地址")
+ private String reservationAddress;
+
+ @ApiModelProperty("上门时间段")
+ private String time;
+
+ @ApiModelProperty("接单时间(师傅接单或后台派单,更新该字段时间)")
+ private Date acceptTime;
+
+ @ApiModelProperty("服务人员id")
+ private Integer serverId;
+
+ @ApiModelProperty("服务人员名称")
+ private String serverName;
+
+ @ApiModelProperty("服务人员手机号")
+ private String serverPhone;
+
+ @ApiModelProperty("预约备注")
+ private String reservationRemark;
+
+ @ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派)")
+ private Integer state;
+
+ @ApiModelProperty("师傅到达预约地点时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date arriveTime;
+
+ @ApiModelProperty("订单类型(0:正常订单,1:后台订单(后台订单与用户端、师傅端无联系))")
+ private Integer type;
+
+ @ApiModelProperty("下单用户经度")
+ private Double longitude;
+
+ @ApiModelProperty("下单用户纬度")
+ private Double latitude;
+
+ @ApiModelProperty("订单完成时间")
+ private Date completeTime;
+
+ @ApiModelProperty("订单补贴金额")
+ private BigDecimal subsidy;
+
+ @ApiModelProperty("是否已提现(0:未提现,1:已提现)")
+ private Integer isWithdrawal;
+
+ @ApiModelProperty("详细地址")
+ private String address;
+
+ @ApiModelProperty("订单取消原因")
+ private String cancelReason;
+
+ @ApiModelProperty("再投原因")
+ private String applyReason;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderResultVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderResultVO.java
new file mode 100644
index 0000000..884305e
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderResultVO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-30 16:30
+ */
+@Data
+@ApiModel(value = "OrderResultVO对象", description = "回收订单统计查询类")
+public class OrderResultVO {
+
+ @ApiModelProperty("订单总额")
+ private BigDecimal orderTotalMoney;
+
+ @ApiModelProperty("订单总数量")
+ private Integer orderTotalNumber;
+
+ @ApiModelProperty("柱状图数据")
+ private List<OrderQueryVO> orderList;
+
+ public OrderResultVO() {
+ }
+
+ public OrderResultVO(BigDecimal orderTotalMoney, Integer orderTotalNumber, List<OrderQueryVO> orderList) {
+ this.orderTotalMoney = orderTotalMoney;
+ this.orderTotalNumber = orderTotalNumber;
+ this.orderList = orderList;
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderSubmitRequest.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderSubmitRequest.java
new file mode 100644
index 0000000..923763d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/OrderSubmitRequest.java
@@ -0,0 +1,22 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-06 14:25
+ */
+@Data
+public class OrderSubmitRequest {
+
+ @ApiModelProperty("订单id")
+ private String orderId;
+
+ @ApiModelProperty("现场照片")
+ private List<String> photo;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ServeCoordinate.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ServeCoordinate.java
new file mode 100644
index 0000000..12e7854
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ServeCoordinate.java
@@ -0,0 +1,69 @@
+package com.ruoyi.order.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 师傅路线经纬度信息
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("sys_serve_coordinate")
+@ApiModel(value = "ServeCoordinate对象", description = "师傅路线经纬度信息")
+public class ServeCoordinate {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("师傅id")
+ @TableField("worker_id")
+ private Integer workerId;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+ @ApiModelProperty("路线经纬度")
+ @TableField("coordinate")
+ private String coordinate;
+
+ @ApiModelProperty("经度")
+ @TableField("longitude")
+ private BigDecimal longitude;
+
+ @ApiModelProperty("纬度")
+ @TableField("latitude")
+ private BigDecimal latitude;
+
+ @TableField("createBy")
+ private String createBy;
+
+ @TableField("updateBy")
+ private String updateBy;
+
+ @TableField("createTime")
+ private Date createTime;
+
+ @TableField("updateTime")
+ private Date updateTime;
+
+ @ApiModelProperty("是否删除 0未删除;1已删除")
+ @TableField("is_delete")
+ private Integer isDelete;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ServeRecord.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ServeRecord.java
new file mode 100644
index 0000000..dbb3cb6
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/ServeRecord.java
@@ -0,0 +1,42 @@
+package com.ruoyi.order.api.entity;
+
+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.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 师傅服务记录
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("sys_serve_record")
+@ApiModel(value = "ServeRecord对象", description = "师傅服务记录")
+public class ServeRecord extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+ @ApiModelProperty("现场照片(多张照片 ','隔开)")
+ @TableField("photo")
+ private String photo;
+
+ @ApiModelProperty("服务备注")
+ @TableField("remark")
+ private String remark;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/UserOrderRequest.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/UserOrderRequest.java
new file mode 100644
index 0000000..5d05dd8
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/UserOrderRequest.java
@@ -0,0 +1,64 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 用户下单请求参数对象
+ *
+ * @author hjl
+ * @since 2024-06-17
+ */
+@Data
+@ApiModel(value = "OrderRequest对象", description = "用户下单请求参数对象")
+public class UserOrderRequest {
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("回收服务id")
+ private Integer serveId;
+
+ @ApiModelProperty("预约姓名")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ private String reservationPhone;
+
+ @ApiModelProperty("预约地址(收货地址id)")
+ private Integer addressId;
+
+ @ApiModelProperty("上门时间")
+ private String time;
+
+ @ApiModelProperty("预约备注(服务备注)")
+ private String reservationRemark;
+
+ @ApiModelProperty("下单用户经度")
+ private Double longitude;
+
+ @ApiModelProperty("下单用户纬度")
+ private Double latitude;
+
+ @ApiModelProperty("订单津贴金额")
+ private BigDecimal subsidy;
+
+ @ApiModelProperty("回收服务价格")
+ private BigDecimal defaultPrice;
+
+ @ApiModelProperty("回收服务名称")
+ private String serveName;
+
+ @ApiModelProperty("预约下单地址")
+ private String address;
+
+ @ApiModelProperty("详细地址")
+ private String addressDetail;
+
+ @ApiModelProperty("下单用户id")
+ private Integer userId;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/UserWithdrawRecordVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/UserWithdrawRecordVO.java
new file mode 100644
index 0000000..4897d15
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/UserWithdrawRecordVO.java
@@ -0,0 +1,72 @@
+package com.ruoyi.order.api.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ruoyi.common.core.constant.Constants;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 10:40
+ */
+@Data
+@ApiModel(value = "UserWithdrawRecordVO对象", description = "用户提现记录信息")
+public class UserWithdrawRecordVO {
+
+ @TableId("id")
+ private Integer id;
+
+ @ApiModelProperty("用户id")
+ private Integer userId;
+
+ @ApiModelProperty("用户手机号")
+ private String userPhone;
+
+ @ApiModelProperty("申请时间")
+ private Date applyForTime;
+
+ @ApiModelProperty("申请金额")
+ private BigDecimal applyForMoney;
+
+ @ApiModelProperty("申请状态 0待审核;1已通过;2已驳回")
+ private Integer state;
+
+ @ApiModelProperty("审批意见")
+ private String opinions;
+
+ @ApiModelProperty("用户编号")
+ private String userNo;
+
+ @ApiModelProperty("用户昵称")
+ private String nickname;
+
+ @ApiModelProperty("头像")
+ private String profilePicture;
+
+ /**
+ * 申请状态中文(导出用) 0待审核;1已通过;2已驳回
+ *
+ * @return 中文状态
+ */
+ public String getStateStr() {
+ if (null == state) {
+ return "未知";
+ } else {
+ if (Constants.AUDIT_NUMBER.equals(state)) {
+ return Constants.AUDIT_STR;
+ } else if (Constants.PASS_THROUGH_NUMBER.equals(state)) {
+ return Constants.PASS_THROUGH_STR;
+ } else if (Constants.REJECT_NUMBER.equals(state)) {
+ return Constants.REJECT_STR;
+ } else {
+ return "未知";
+ }
+ }
+ }
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Withdraw.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Withdraw.java
new file mode 100644
index 0000000..6244d4a
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/Withdraw.java
@@ -0,0 +1,64 @@
+package com.ruoyi.order.api.entity;
+
+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.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户提现申请记录表
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("t_withdraw")
+@ApiModel(value = "Withdraw对象", description = "用户提现申请记录表")
+public class Withdraw extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ @ApiModelProperty("用户手机号")
+ @TableField("user_phone")
+ private String userPhone;
+
+ @ApiModelProperty("申请时间")
+ @TableField("apply_for_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date applyForTime;
+
+ @ApiModelProperty("申请金额")
+ @TableField("apply_for_money")
+ private BigDecimal applyForMoney;
+
+ @ApiModelProperty("申请状态 0待审核;1已通过;2已驳回")
+ @TableField("state")
+ private Integer state;
+
+ @ApiModelProperty("审批意见")
+ @TableField("opinion")
+ private String opinion;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawDetailVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawDetailVO.java
new file mode 100644
index 0000000..e11ca9e
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawDetailVO.java
@@ -0,0 +1,97 @@
+package com.ruoyi.order.api.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-09 18:10
+ */
+@Data
+public class WithdrawDetailVO {
+
+ @ApiModelProperty("订单id")
+ private String orderId;
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("下单用户id")
+ private Integer userId;
+
+ @ApiModelProperty("回收服务id")
+ private Integer serveId;
+
+ @ApiModelProperty("回收服务名称")
+ private String serveName;
+
+ @ApiModelProperty("回收服务回收价")
+ private BigDecimal servePrice;
+
+ @ApiModelProperty("订单成交价(服务回收价 + 津贴)")
+ private BigDecimal orderMoney;
+
+ @ApiModelProperty("预约姓名")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ private String reservationPhone;
+
+ @ApiModelProperty("预约地址")
+ private String reservationAddress;
+
+ @ApiModelProperty("上门时间段")
+ private String time;
+
+ @ApiModelProperty("接单时间(师傅接单或后台派单,更新该字段时间)")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date acceptTime;
+
+ @ApiModelProperty("服务人员id")
+ private Integer serverId;
+
+ @ApiModelProperty("服务人员名称")
+ private String serverName;
+
+ @ApiModelProperty("服务人员手机号")
+ private String serverPhone;
+
+ @ApiModelProperty("预约备注")
+ private String reservationRemark;
+
+ @ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派)")
+ private Integer state;
+
+ @ApiModelProperty("师傅到达预约地点时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date arriveTime;
+
+ @ApiModelProperty("订单完成时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date completeTime;
+
+ @ApiModelProperty("订单补贴金额")
+ private BigDecimal subsidy;
+
+ @ApiModelProperty("是否已提现(0:未提现,1:已提现)")
+ private Integer isWithdrawal;
+
+ @ApiModelProperty("提现申请状态(0待审核;1已通过;2已驳回)")
+ private Integer withdrawalState;
+
+ @ApiModelProperty("提现申请时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date withdrawalTime;
+
+ @ApiModelProperty("详细地址")
+ private String address;
+
+ @ApiModelProperty("现场照片(多张照片 ','隔开)")
+ private String photo;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawExportRequest.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawExportRequest.java
new file mode 100644
index 0000000..69641a3
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawExportRequest.java
@@ -0,0 +1,31 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-28 11:31
+ */
+@Data
+public class WithdrawExportRequest {
+
+ @ApiModelProperty("用户昵称")
+ private String nickname;
+
+ @ApiModelProperty("手机号")
+ private String userPhone;
+
+ @ApiModelProperty("申请时间")
+ private String applyForTime;
+
+ @ApiModelProperty("提现状态")
+ private Integer state;
+
+ @ApiModelProperty("所选数据id")
+ private List<String> idList;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawReturnVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawReturnVO.java
new file mode 100644
index 0000000..9e3e638
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawReturnVO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.order.api.entity;
+
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-08 18:37
+ */
+@Data
+public class WithdrawReturnVO {
+
+ private String orderId;
+
+ private Integer userId;
+
+ public WithdrawReturnVO(String orderId, Integer userId) {
+ this.orderId = orderId;
+ this.userId = userId;
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawalSetting.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawalSetting.java
new file mode 100644
index 0000000..db0f04e
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WithdrawalSetting.java
@@ -0,0 +1,34 @@
+package com.ruoyi.order.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 审核管理全局设置
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("sys_withdrawal_setting")
+@ApiModel(value = "WithdrawalSetting对象", description = "审核管理全局设置")
+public class WithdrawalSetting {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("是否开启审核(0:未开启,1:已开启)")
+ @TableField("enable_process")
+ private Integer enableProcess;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WorkerOrderCountVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WorkerOrderCountVO.java
new file mode 100644
index 0000000..51ae447
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WorkerOrderCountVO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.order.api.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-09 16:11
+ */
+@Data
+public class WorkerOrderCountVO {
+
+ @ApiModelProperty("总订单数")
+ private Integer total;
+
+ @ApiModelProperty("待上门订单数")
+ private Integer waitVisit;
+
+ @ApiModelProperty("已完结订单数")
+ private Integer completed;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WorkerOrderRankVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WorkerOrderRankVO.java
new file mode 100644
index 0000000..67a653b
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/entity/WorkerOrderRankVO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.order.api.entity;
+
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-09 10:12
+ */
+@Data
+public class WorkerOrderRankVO {
+
+ private Integer workerId;
+
+ private Integer orderNumber;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/EvaluateFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/EvaluateFallbackFactory.java
new file mode 100644
index 0000000..8f2b54f
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/EvaluateFallbackFactory.java
@@ -0,0 +1,66 @@
+package com.ruoyi.order.api.factory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.entity.Evaluate;
+import com.ruoyi.order.api.entity.EvaluatePageVO;
+import com.ruoyi.order.api.entity.OrderEvaluateSubmitRequest;
+import com.ruoyi.order.api.entity.OrderEvaluateVO;
+import com.ruoyi.order.api.feignClient.EvaluateClient;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ */
+@Component
+public class EvaluateFallbackFactory implements FallbackFactory<EvaluateClient> {
+
+ @Override
+ public EvaluateClient create(Throwable cause) {
+ return new EvaluateClient() {
+ @Override
+ public R<Page<EvaluatePageVO>> queryPageList(String userNo, String orderNumber, String workerName, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Evaluate> detail(Integer id) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<String> batchDelete(String ids) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Page<EvaluatePageVO>> evaluateList(Integer userId, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<List<Evaluate>> evaluateByWorkerId(Integer workerId) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Evaluate> oneByOrderId(String orderId) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Page<OrderEvaluateVO>> evaluateListByUser(Integer userId, Integer state, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> evaluateSave(OrderEvaluateSubmitRequest request) {
+ return R.fail(cause.getMessage());
+ }
+
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ExchangeDispatchFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ExchangeDispatchFallbackFactory.java
new file mode 100644
index 0000000..b8bd600
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ExchangeDispatchFallbackFactory.java
@@ -0,0 +1,65 @@
+package com.ruoyi.order.api.factory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.entity.ChangeDispatch;
+import com.ruoyi.order.api.feignClient.ExchangeDispatchClient;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author HJL
+ */
+@Component
+public class ExchangeDispatchFallbackFactory implements FallbackFactory<ExchangeDispatchClient> {
+
+ @Override
+ public ExchangeDispatchClient create(Throwable cause) {
+ return new ExchangeDispatchClient() {
+ @Override
+ public R<Page<ChangeDispatch>> queryPageList(String workerName, String orderNumber, String userName, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> changeDispatchSave(ChangeDispatch changeDispatch) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<ChangeDispatch> changeDispatchOne(String id) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<ChangeDispatch> detail(String id) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> save(ChangeDispatch changeDispatch) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> saveRecord(ChangeDispatch changeDispatch) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<String> batchDelete(String ids) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> changeWorker(String changeId, Integer workerId, String name, String phone) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> refuseChangeDispatch(String id) {
+ return R.fail(cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
new file mode 100644
index 0000000..5675d83
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
@@ -0,0 +1,186 @@
+package com.ruoyi.order.api.factory;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.vo.Path;
+import com.ruoyi.order.api.entity.*;
+import com.ruoyi.order.api.feignClient.OrderClient;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author HJL
+ */
+@Component
+public class OrderFallbackFactory implements FallbackFactory<OrderClient> {
+
+ @Override
+ public OrderClient create(Throwable cause) {
+ return new OrderClient() {
+ @Override
+ public R<Boolean> save(OrderRequest orderRequest) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Order> detailByExchangeId(String id) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Order> detail(String id) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Order> exchangeOrder(Integer type, String orderId, Integer workerId, String name, String phone) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> batchDelete(String ids) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Page<OrderCountVO>> orderCount(String name, String phone, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<List<Order>> excelExport(OrderQueryRequest orderQueryRequest) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<List<Order>> queryList(String phone) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Page<Order>> queryPage(OrderQueryRequest orderQueryRequest) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<OrderPageCountVO> orderPageCount(OrderQueryRequest orderQueryRequest) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> updateState(String orderId, Integer state) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> generateNewOrder(Order order) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<OrderResultVO> orderCountHome(OrderCountRequest orderCount) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<IPage<Order>> orderList(Integer userId, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> updateWithdrawalState(String orderId, Integer state) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<BigDecimal> tradeMoney(List<String> cityList, String type) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Page<Order>> orderListWorker(Integer userId, Integer state, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<List<WorkerOrderRankVO>> workerOrderRank(List<Integer> workerIds) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Path> orderNavigation(String orderId, Integer workerId, String longitude, String latitude) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> reachPosition(String orderId, Integer workerId) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<OrderDetailVO> orderDetail(String orderId) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> orderSubmit(OrderSubmitRequest orderSubmitRequest) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> coordinate(String orderId, Integer workerId, Double longitude, Double latitude) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<List<Order>> orderNotHandle(Integer workerId) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<List<Order>> orderTopListByWorkerId(Integer workerId) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> orderTop(String orderId, Integer workerId) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<WorkerOrderCountVO> orderStateCount(Integer workerId) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Page<Order>> orderListByUser(Integer userId, Integer state, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<String> orderEstimate(UserOrderRequest userOrderRequest) {
+ return R.fail(cause.getMessage());
+ }
+
+
+ @Override
+ public R<Boolean> placeOrder(UserOrderRequest userOrderRequest) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> supplementAllowance(String orderId, String prizeName) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> changeOrderState(String orderId, Integer state) {
+ return R.fail(cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ServeCoordinateFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ServeCoordinateFallbackFactory.java
new file mode 100644
index 0000000..84a57c0
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ServeCoordinateFallbackFactory.java
@@ -0,0 +1,26 @@
+package com.ruoyi.order.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.entity.ServeCoordinate;
+import com.ruoyi.order.api.feignClient.ServeCoordinateClient;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ */
+@Component
+public class ServeCoordinateFallbackFactory implements FallbackFactory<ServeCoordinateClient> {
+
+ @Override
+ public ServeCoordinateClient create(Throwable cause) {
+ return new ServeCoordinateClient() {
+ @Override
+ public R<List<ServeCoordinate>> serveCoordinateList(String orderId, String workerId) {
+ return R.fail(cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ServeRecordFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ServeRecordFallbackFactory.java
new file mode 100644
index 0000000..2705b97
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ServeRecordFallbackFactory.java
@@ -0,0 +1,24 @@
+package com.ruoyi.order.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.entity.ServeRecord;
+import com.ruoyi.order.api.feignClient.ServeRecordClient;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author HJL
+ */
+@Component
+public class ServeRecordFallbackFactory implements FallbackFactory<ServeRecordClient> {
+
+ @Override
+ public ServeRecordClient create(Throwable cause) {
+ return new ServeRecordClient() {
+ @Override
+ public R<ServeRecord> serveRecordByOrderId(String orderId) {
+ return R.fail(cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/WithdrawFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/WithdrawFallbackFactory.java
new file mode 100644
index 0000000..d32c440
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/WithdrawFallbackFactory.java
@@ -0,0 +1,99 @@
+package com.ruoyi.order.api.factory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.entity.*;
+import com.ruoyi.order.api.feignClient.WithdrawClient;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author HJL
+ */
+@Component
+public class WithdrawFallbackFactory implements FallbackFactory<WithdrawClient> {
+
+ @Override
+ public WithdrawClient create(Throwable cause) {
+ return new WithdrawClient() {
+ @Override
+ public R<Page<UserWithdrawRecordVO>> withdrawPage(String nickname, String userPhone, String applyForTime, Integer state, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Withdraw> withdrawRecordDetail(Integer id) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<List<UserWithdrawRecordVO>> excelExport(WithdrawExportRequest exportRequest) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<String> batchDelete(String ids) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> withdrawExamine(Integer id, Integer state, String opinion, String openId, Integer userId) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<BigDecimal> withdrawalTotalMoney(MoneyQueryRequest request) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> enableProcess(Integer enableProcess) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<WithdrawalSetting> withdrawProcess() {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<WithdrawalSetting> withdrawState() {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Page<UserWithdrawRecordVO>> withdrawList(Integer userId, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<List<Withdraw>> withdrawRecordByUser(String orderId, Integer userId) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Boolean> confirmWithdrawByUser(String orderId, Integer userId, String openId, String userPhone) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Page<Order>> withdrawListByUser(Integer userId, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+ @Override
+ public R<Page<Withdraw>> withdrawRecordList(Integer userId, Integer pageNum, Integer pageSize) {
+ return R.fail(cause.getMessage());
+ }
+
+
+ @Override
+ public R<WithdrawDetailVO> withdrawDetailByUser(String orderId) {
+ return R.fail(cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/EvaluateClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/EvaluateClient.java
new file mode 100644
index 0000000..aae89f3
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/EvaluateClient.java
@@ -0,0 +1,115 @@
+package com.ruoyi.order.api.feignClient;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.entity.Evaluate;
+import com.ruoyi.order.api.entity.EvaluatePageVO;
+import com.ruoyi.order.api.entity.OrderEvaluateSubmitRequest;
+import com.ruoyi.order.api.entity.OrderEvaluateVO;
+import com.ruoyi.order.api.factory.EvaluateFallbackFactory;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @since 2024.05.29
+ */
+@FeignClient(contextId = "OrderClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = EvaluateFallbackFactory.class)
+public interface EvaluateClient {
+
+ /**
+ * 订单评价分页列表
+ *
+ * @param userNo 下单用户名称
+ * @param workerName 师傅名称
+ * @param orderNumber 订单编号
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ * @return 分页列表
+ */
+ @GetMapping(value = "/evaluate/page")
+ R<Page<EvaluatePageVO>> queryPageList(@RequestParam(value = "userNo", required = false) String userNo,
+ @RequestParam(value = "orderNumber", required = false) String orderNumber,
+ @RequestParam(value = "workerName", required = false) String workerName,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 订单评价详情
+ *
+ * @param id 订单评价id
+ * @return 详情
+ */
+ @GetMapping(value = "/evaluate/detail")
+ R<Evaluate> detail(@RequestParam("id") Integer id);
+
+ /**
+ * 根据id批量删除订单评价
+ *
+ * @param ids 订单评价多条id拼接
+ * @return 软删除结果
+ */
+ @GetMapping(value = "/evaluate/batchDelete")
+ R<String> batchDelete(@RequestParam("ids") String ids);
+
+ /**
+ * 用户所关联评价记录分页列表
+ *
+ * @param userId 用户id
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ * @return 分页列表
+ */
+ @GetMapping(value = "/evaluate/evaluateList")
+ R<Page<EvaluatePageVO>> evaluateList(@RequestParam(value = "userId", required = false) Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 根据师傅id获取评价列表
+ *
+ * @param workerId 师傅id
+ * @return 评价列表
+ */
+ @GetMapping(value = "/evaluate/evaluateByWorkerId")
+ R<List<Evaluate>> evaluateByWorkerId(@RequestParam("workerId") Integer workerId);
+
+ /**
+ * 根据订单id获取评价列表
+ *
+ * @param orderId 订单id
+ * @return 评价详情
+ */
+ @ApiOperation(value = "根据订单id获取评价列表", tags = {"后台-系统设置-订单评价管理"})
+ @GetMapping(value = "/evaluate/oneByOrderId")
+ R<Evaluate> oneByOrderId(@RequestParam("orderId") String orderId);
+
+ /**
+ * 订单评价列表
+ *
+ * @param userId 用户id
+ * @return 订单评价列表
+ */
+ @GetMapping(value = "/evaluate/evaluateListByUser")
+ R<Page<OrderEvaluateVO>> evaluateListByUser(@RequestParam("userId") Integer userId,
+ @RequestParam("state") Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 提交评价
+ *
+ * @param request 评价信息
+ * @return 提交结果
+ */
+ @PostMapping(value = "/evaluate/evaluateSave")
+ R<Boolean> evaluateSave(@RequestBody OrderEvaluateSubmitRequest request);
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ExchangeDispatchClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ExchangeDispatchClient.java
new file mode 100644
index 0000000..0dc3436
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ExchangeDispatchClient.java
@@ -0,0 +1,118 @@
+package com.ruoyi.order.api.feignClient;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.entity.ChangeDispatch;
+import com.ruoyi.order.api.factory.ExchangeDispatchFallbackFactory;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author HJL
+ * @since 2024.05.29
+ */
+@FeignClient(contextId = "OrderClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = ExchangeDispatchFallbackFactory.class)
+public interface ExchangeDispatchClient {
+
+ /**
+ * 订单改派分页列表
+ *
+ * @param workerName 师傅姓名
+ * @param userName 用户名称
+ * @param orderNumber 订单编号
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ * @return 分页列表
+ */
+ @GetMapping(value = "changeDispatch/page")
+ R<Page<ChangeDispatch>> queryPageList(@RequestParam(value = "workerName", required = false) String workerName,
+ @RequestParam(value = "orderNumber", required = false) String orderNumber,
+ @RequestParam(value = "userName", required = false) String userName,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 订单改派 -远程调用
+ *
+ * @param changeDispatch 订单改派信息
+ * @return 新增结果
+ */
+ @ApiOperation(value = "新增订单改派", tags = {"后台-系统设置-订单改派管理"})
+ @PostMapping(value = "changeDispatch/changeDispatchSave")
+ R<Boolean> changeDispatchSave(@RequestBody ChangeDispatch changeDispatch);
+
+ /**
+ * 订单改派详情 远程调用
+ *
+ * @param id 订单id
+ * @return 改派详情
+ */
+ @GetMapping(value = "changeDispatch/changeDispatchOne")
+ R<ChangeDispatch> changeDispatchOne(@RequestParam("id") String id);
+
+ /**
+ * 订单改派详情
+ *
+ * @param id 订单改派id
+ * @return 改派详情
+ */
+ @GetMapping(value = "changeDispatch/detail")
+ R<ChangeDispatch> detail(@RequestParam("id") String id);
+
+ /**
+ * 订单改派详情
+ *
+ * @param changeDispatch 订单改派信息
+ * @return 保存结果
+ */
+ @ApiOperation(value = "新增订单改派", tags = {"后台-系统设置-订单改派管理"})
+ @PostMapping(value = "changeDispatch/save")
+ R<Boolean> save(@RequestBody ChangeDispatch changeDispatch);
+
+ /**
+ * 订单改派详情
+ *
+ * @param changeDispatch 订单改派信息
+ * @return 操作结果
+ */
+ @ApiOperation(value = "订单改派新逻辑", tags = {"后台-系统设置-订单改派管理"})
+ @PostMapping(value = "changeDispatch/saveRecord")
+ R<Boolean> saveRecord(@RequestBody ChangeDispatch changeDispatch);
+
+ /**
+ * 根据id批量删除订单改派
+ *
+ * @param ids 订单改派多条id拼接
+ * @return 删除结果
+ */
+ @GetMapping(value = "changeDispatch/batchDelete")
+ R<String> batchDelete(@RequestParam("ids") String ids);
+
+ /**
+ * 订单改派师傅
+ *
+ * @param changeId 改派订单id
+ * @param workerId 师傅id
+ * @param name 师傅姓名
+ * @param phone 师傅电话
+ * @return 改派结果
+ */
+ @GetMapping(value = "changeDispatch/changeWorker")
+ R<Boolean> changeWorker(@RequestParam("changeId") String changeId, @RequestParam("workerId") Integer workerId,
+ @RequestParam("name") String name, @RequestParam("phone") String phone);
+
+ /**
+ * 拒绝订单改派申请
+ *
+ * @param id 订单id
+ * @return 操作结果
+ */
+ @GetMapping(value = "changeDispatch/refuseChangeDispatch")
+ R<Boolean> refuseChangeDispatch(@RequestParam("id") String id);
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
new file mode 100644
index 0000000..c0a60c4
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
@@ -0,0 +1,374 @@
+package com.ruoyi.order.api.feignClient;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.vo.Path;
+import com.ruoyi.order.api.entity.*;
+import com.ruoyi.order.api.factory.OrderFallbackFactory;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author HJL
+ * @since 2024.05.29
+ */
+@FeignClient(contextId = "OrderClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = OrderFallbackFactory.class)
+public interface OrderClient {
+
+ /**
+ * 新增订单
+ * 后台订单为指定订单,默认为待上门状态
+ *
+ * @param orderRequest 站点信息
+ * @return 返回结果
+ */
+ @PostMapping(value = "/order/save")
+ R<Boolean> save(@RequestBody OrderRequest orderRequest);
+
+ /**
+ * 根据改派申请id获取订单详情
+ *
+ * @param id 改派申请id
+ * @return 订单详情
+ */
+ @ApiOperation(value = "订单列表-订单详情", tags = {"后台-订单管理"})
+ @GetMapping(value = "/order/detailByExchangeId")
+ R<Order> detailByExchangeId(@RequestParam("id") String id);
+
+ /**
+ * 订单详情
+ *
+ * @param id 订单id
+ * @return 订单信息
+ */
+ @GetMapping(value = "/order/detail")
+ R<Order> detail(@RequestParam("id") String id);
+
+ /**
+ * 更改订单信息
+ *
+ * @param type 1:订单派单;2:订单改派
+ * @param orderId 订单id
+ * @param workerId 师傅id
+ * @param name 师傅名称
+ * @param phone 师傅电话
+ * @return 更改结果
+ */
+ @GetMapping(value = "/order/exchangeOrder")
+ R<Order> exchangeOrder(@RequestParam("type") Integer type, @RequestParam("orderId") String orderId,
+ @RequestParam("workerId") Integer workerId, @RequestParam("name") String name,
+ @RequestParam("phone") String phone);
+
+ /**
+ * 根据id批量删除站点
+ *
+ * @param ids 站点多条id拼接
+ * @return 删除结果
+ */
+ @GetMapping(value = "/order/batchDelete")
+ R<Boolean> batchDelete(@RequestParam("ids") String ids);
+
+ /**
+ * 订单统计
+ *
+ * @param name 师傅姓名
+ * @param phone 师傅电话
+ * @param pageNum 页码
+ * @param pageSize 每页条数
+ * @return 分页
+ */
+ @GetMapping(value = "/order/orderCount")
+ R<Page<OrderCountVO>> orderCount(@RequestParam(value = "name", required = false) String name,
+ @RequestParam(value = "phone", required = false) String phone,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 订单列表-excel导出
+ *
+ * @param orderQueryRequest 筛选参数
+ * @return 查询参数
+ */
+ @PostMapping(value = "/order/excelExport")
+ R<List<Order>> excelExport(@RequestBody OrderQueryRequest orderQueryRequest);
+
+ /**
+ * 根据前台用户id查询所有订单信息
+ *
+ * @param phone 手机号
+ * @return 订单列表
+ */
+ @GetMapping(value = "/order/queryList")
+ R<List<Order>> queryList(@RequestParam("phone") String phone);
+
+ /**
+ * 订单列表
+ *
+ * @param orderQueryRequest 订单列表查询参数
+ * @return 分页列表
+ */
+ @PostMapping(value = "/order/queryPage")
+ R<Page<Order>> queryPage(@RequestBody OrderQueryRequest orderQueryRequest);
+
+ /**
+ * 订单列表
+ *
+ * @param orderQueryRequest 查询参数
+ * @return 统计
+ */
+ @PostMapping(value = "/order/orderPageCount")
+ R<OrderPageCountVO> orderPageCount(@RequestBody OrderQueryRequest orderQueryRequest);
+
+ /**
+ * 更改订单状态
+ *
+ * @param orderId 订单id
+ * @param state 订单状态
+ * @return 更改结果
+ */
+ @PostMapping(value = "/order/updateState")
+ R<Boolean> updateState(@RequestParam("orderId") String orderId, @RequestParam("state") Integer state);
+
+ /**
+ * 申请改派审核通过后生成新订单
+ *
+ * @param order 订单信息
+ * @return 生成订单结果
+ */
+ @GetMapping(value = "/order/generateNewOrder")
+ R<Boolean> generateNewOrder(@RequestBody Order order);
+
+ /**
+ * 回收订单统计
+ *
+ * @param orderCount 查询所需参数
+ * @return 统计结果
+ */
+ @PostMapping(value = "/order/orderCountHome")
+ R<OrderResultVO> orderCountHome(@RequestBody OrderCountRequest orderCount);
+
+ /**
+ * 用户所关联订单记录分页列表
+ *
+ * @param userId 手机号
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ * @return 分页列表
+ */
+ @GetMapping(value = "/order/orderList")
+ R<IPage<Order>> orderList(@RequestParam("userId") Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 更改订单提现状态
+ *
+ * @param orderId 订单id
+ * @param state 提现状态
+ * @return 修改结果
+ */
+ @PostMapping(value = "/order/updateWithdrawalState")
+ R<Boolean> updateWithdrawalState(@RequestParam("orderId") String orderId,
+ @RequestParam("state") Integer state);
+
+ /**
+ * 根据类型获取交易额
+ *
+ * @param cityList 城市列表
+ * @param type 查询类型
+ * @return 交易额
+ */
+ @GetMapping(value = "/order/tradeMoney")
+ R<BigDecimal> tradeMoney(@RequestParam("cityList") List<String> cityList,
+ @RequestParam("type") String type);
+
+ /**
+ * 师傅端-订单列表
+ *
+ * @param userId 用户端
+ * @param state 订单状态
+ * @param pageNum 页码
+ * @param pageSize 条数
+ * @return 交易额
+ */
+ @GetMapping(value = "/order/orderListWorker")
+ R<Page<Order>> orderListWorker(@RequestParam("userId") Integer userId, @RequestParam("state") Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 师傅端-根据师傅id获取订单数量
+ *
+ * @param workerIds 师傅id集合
+ * @return 接单列表
+ */
+ @PostMapping(value = "/order/workerOrderRank")
+ R<List<WorkerOrderRankVO>> workerOrderRank(@RequestBody List<Integer> workerIds);
+
+ /**
+ * 师傅端-订单路线导航
+ *
+ * @param orderId 订单id
+ * @param workerId 师傅id
+ * @param longitude 经度
+ * @param latitude 纬度
+ * @return 订单导航
+ */
+ @GetMapping(value = "/order/orderNavigation")
+ R<Path> orderNavigation(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId,
+ @RequestParam("longitude") String longitude, @RequestParam("latitude") String latitude);
+
+ /**
+ * 师傅端-已到达预约地点
+ *
+ * @param orderId 订单id
+ * @param workerId 师傅id
+ * @return 修改订单状态
+ */
+ @GetMapping(value = "/order/reachPosition")
+ R<Boolean> reachPosition(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId);
+
+ /**
+ * 师傅端-订单详情
+ *
+ * @param orderId 订单id
+ * @return 订单详情
+ */
+ @GetMapping(value = "/order/orderDetail")
+ R<OrderDetailVO> orderDetail(@RequestParam("orderId") String orderId);
+
+ /**
+ * 师傅端-提交订单
+ *
+ * @param orderSubmitRequest 提交订单信息
+ * @return 提交结果
+ */
+ @PostMapping(value = "/order/orderSubmit")
+ R<Boolean> orderSubmit(@RequestBody OrderSubmitRequest orderSubmitRequest);
+
+ /**
+ * 师傅端-定时调度记录师傅所走路线经纬度
+ *
+ * @param orderId 订单id
+ * @param workerId 师傅id
+ * @param longitude 经度
+ * @param latitude 纬度
+ * @return 保存记录结果
+ */
+ @ApiOperation(value = "订单进行-记录路线经纬度", tags = {"师傅端"})
+ @GetMapping(value = "/order/coordinate")
+ R<Boolean> coordinate(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId,
+ @RequestParam("longitude") Double longitude, @RequestParam("latitude") Double latitude);
+
+ /**
+ * 师傅端-代办列表
+ *
+ * @param workerId 师傅id
+ * @return 订单列表
+ */
+ @ApiOperation(value = "根据师傅id查询订单", tags = {"师傅端"})
+ @GetMapping(value = "/order/orderNotHandle")
+ R<List<Order>> orderNotHandle(@RequestParam("workerId") Integer workerId);
+
+ /**
+ * 师傅端-根据师傅id查询订单并按照置顶顺序排序
+ *
+ * @param workerId 师傅id
+ * @return 订单列表
+ */
+ @ApiOperation(value = "根据师傅id查询订单并按照置顶顺序排序", tags = {"师傅端"})
+ @GetMapping(value = "/order/orderTopListByWorkerId")
+ R<List<Order>> orderTopListByWorkerId(@RequestParam("workerId") Integer workerId);
+
+ /**
+ * 师傅端-订单代办列表
+ *
+ * @param orderId 订单id
+ * @param workerId 师傅id
+ * @return 置顶结果
+ */
+ @ApiOperation(value = "订单置顶", tags = {"师傅端-首页"})
+ @GetMapping(value = "/order/orderTop")
+ R<Boolean> orderTop(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId);
+
+ /**
+ * 师傅端-订单状态统计数量
+ *
+ * @param workerId 师傅id
+ * @return 统计数量
+ */
+ @ApiOperation(value = "订单状态统计数量", tags = {"师傅端-首页"})
+ @GetMapping(value = "/order/orderStateCount")
+ R<WorkerOrderCountVO> orderStateCount(@RequestParam("workerId") Integer workerId);
+
+ /**
+ * 更改订单状态
+ *
+ * @param orderId 订单id
+ * @param state 状态
+ * @return 更改结果
+ */
+ @ApiOperation(value = "更改订单状态", tags = {"后台-订单管理"})
+ @GetMapping(value = "/order/changeOrderState")
+ R<Boolean> changeOrderState(@RequestParam("orderId") String orderId, @RequestParam("state") Integer state);
+
+ /********************************* 用户端 ******************************************/
+
+ /**
+ * 师傅端-订单状态统计数量
+ *
+ * @param userId 用户id
+ * @param state 订单状态
+ * @param pageNum 页码
+ * @param pageSize 条数
+ * @return 订单列表
+ */
+ @ApiOperation(value = "订单状态统计数量", tags = {"用户端"})
+ @GetMapping(value = "/order/orderListByUser")
+ R<Page<Order>> orderListByUser(@RequestParam("userId") Integer userId,
+ @RequestParam("state") Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 用户端-生成预订单信息
+ *
+ * @param userOrderRequest 下单参数
+ * @return 下单结果
+ */
+ @ApiOperation(value = "生成预订单信息", tags = {"用户端"})
+ @PostMapping(value = "/order/orderEstimate")
+ R<String> orderEstimate(@RequestBody UserOrderRequest userOrderRequest);
+
+ /**
+ * 用户端-用户下单
+ *
+ * @param userOrderRequest 下单参数
+ * @return 下单结果
+ */
+ @ApiOperation(value = "下单", tags = {"用户端"})
+ @PostMapping(value = "/order/placeOrder")
+ R<Boolean> placeOrder(@RequestBody UserOrderRequest userOrderRequest);
+
+ /**
+ * 站点详情
+ *
+ * @param orderId 订单id
+ * @param prizeName 奖品名称
+ * @return 操作结果
+ */
+ @ApiOperation(value = "补充订单津贴金额", tags = {"后台-订单管理"})
+ @GetMapping(value = "/order/supplementAllowance")
+ R<Boolean> supplementAllowance(@RequestParam("orderId") String orderId,
+ @RequestParam("prizeName") String prizeName);
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ServeCoordinateClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ServeCoordinateClient.java
new file mode 100644
index 0000000..d4aae37
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ServeCoordinateClient.java
@@ -0,0 +1,31 @@
+package com.ruoyi.order.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.entity.ServeCoordinate;
+import com.ruoyi.order.api.factory.ServeCoordinateFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @since 2024.05.29
+ */
+@FeignClient(contextId = "OrderClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = ServeCoordinateFallbackFactory.class)
+public interface ServeCoordinateClient {
+
+ /**
+ * 根据订单id和师傅id获取订单路线轨迹
+ *
+ * @param orderId 订单id
+ * @param workerId 师傅id
+ * @return 路线轨迹
+ */
+ @GetMapping(value = "/serveCoordinate/serveCoordinateList")
+ R<List<ServeCoordinate>> serveCoordinateList(@RequestParam("orderId") String orderId,
+ @RequestParam("workerId") String workerId);
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ServeRecordClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ServeRecordClient.java
new file mode 100644
index 0000000..6f44ae8
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ServeRecordClient.java
@@ -0,0 +1,27 @@
+package com.ruoyi.order.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.entity.ServeRecord;
+import com.ruoyi.order.api.factory.ServeRecordFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author HJL
+ * @since 2024.05.29
+ */
+@FeignClient(contextId = "OrderClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = ServeRecordFallbackFactory.class)
+public interface ServeRecordClient {
+
+ /**
+ * 根据订单id获取服务记录
+ *
+ * @param orderId 订单id
+ * @return 服务记录
+ */
+ @GetMapping(value = "/serveRecord/serveRecordByOrderId")
+ R<ServeRecord> serveRecordByOrderId(@RequestParam("orderId") String orderId);
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/WithdrawClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/WithdrawClient.java
new file mode 100644
index 0000000..d54ac6a
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/WithdrawClient.java
@@ -0,0 +1,191 @@
+package com.ruoyi.order.api.feignClient;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.entity.*;
+import com.ruoyi.order.api.factory.WithdrawFallbackFactory;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author HJL
+ * @since 2024.05.29
+ */
+@FeignClient(contextId = "OrderClient", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = WithdrawFallbackFactory.class)
+public interface WithdrawClient {
+
+ /**
+ * 用户所关联提现记录分页列表
+ *
+ * @param nickname 用户昵称
+ * @param userPhone 用户手机号
+ * @param applyForTime 申请时间
+ * @param state 状态
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ * @return 分页列表
+ */
+ @GetMapping(value = "/withdraw/withdrawPage")
+ R<Page<UserWithdrawRecordVO>> withdrawPage(@RequestParam(value = "nickname", required = false) String nickname,
+ @RequestParam(value = "userPhone", required = false) String userPhone,
+ @RequestParam(value = "applyForTime", required = false) String applyForTime,
+ @RequestParam(value = "state", required = false) Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 查看提现记录详情
+ *
+ * @param id 提现记录id
+ * @return 提现详情
+ */
+ @GetMapping(value = "/withdraw/withdrawRecordDetail")
+ R<Withdraw> withdrawRecordDetail(@RequestParam("id") Integer id);
+
+ /**
+ * 用户提现记录导出
+ *
+ * @param exportRequest 提现记录
+ * @return 筛选数据列表
+ */
+ @ApiOperation(value = "用户提现管理-excel导出用户提现记录", tags = {"后台-用户管理-提现列表"})
+ @PostMapping(value = "/withdraw/excelExport")
+ R<List<UserWithdrawRecordVO>> excelExport(@RequestBody WithdrawExportRequest exportRequest);
+
+ /**
+ * 批量删除提现记录
+ *
+ * @param ids 提现记录多条id拼接
+ * @return 封装分页数据
+ */
+ @GetMapping(value = "/withdraw/batchDelete")
+ R<String> batchDelete(@RequestParam("ids") String ids);
+
+ /**
+ * 提现管理-提现审批
+ *
+ * @param id 提现记录id
+ * @param state 审批结果
+ * @param opinion 审批意见
+ * @param openId 微信用户openId
+ * @param userId 用户id
+ * @return 提现结果
+ */
+ @GetMapping(value = "/withdraw/withdrawExamine")
+ R<Boolean> withdrawExamine(@RequestParam("id") Integer id, @RequestParam("state") Integer state,
+ @RequestParam(value = "opinion", required = false) String opinion,
+ @RequestParam(value = "openId") String openId,
+ @RequestParam(value = "userId") Integer userId);
+
+ /**
+ * 根据类型统计提现金额
+ *
+ * @param request 根据类型统计提现金额
+ * @return 封装分页数据
+ */
+ @PostMapping(value = "/withdraw/withdrawalTotalMoney")
+ R<BigDecimal> withdrawalTotalMoney(@RequestBody MoneyQueryRequest request);
+
+ /**
+ * 修改系统设置-关闭/开启审核
+ *
+ * @param enableProcess 审核状态
+ * @return 操作结果
+ */
+ @ApiOperation(value = "关闭/开启审核", tags = {"后台-用户管理-用户列表"})
+ @GetMapping(value = "/withdraw/enableProcess")
+ R<Boolean> enableProcess(@RequestParam("enableProcess") Integer enableProcess);
+
+ /**
+ * 获取系统设置-审核设置
+ * --远程调用
+ *
+ * @return 操作结果
+ */
+ @GetMapping(value = "/withdraw/withdrawProcess")
+ R<WithdrawalSetting> withdrawProcess();
+
+ /**
+ * 全局审核状态
+ *
+ * @return 全局审核状态
+ */
+ @GetMapping(value = "/withdraw/withdrawState")
+ R<WithdrawalSetting> withdrawState();
+
+ /**
+ * 用户所关联提现记录分页列表
+ *
+ * @param userId 用户id
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ * @return 分页列表
+ */
+ @GetMapping(value = "/withdraw/withdrawList")
+ R<Page<UserWithdrawRecordVO>> withdrawList(@RequestParam("userId") Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 根据订单获取用户提现申请记录
+ *
+ * @param orderId 订单id
+ * @param userId 用户id
+ * @return 提现记录
+ */
+ @GetMapping(value = "/withdraw/withdrawRecordByUser")
+ R<List<Withdraw>> withdrawRecordByUser(@RequestParam("orderId") String orderId,
+ @RequestParam("userId") Integer userId);
+
+ /**
+ * 用户端-用户提交提现申请
+ *
+ * @param orderId 订单id
+ * @param userId 用户id
+ * @param openId 微信用户openId
+ * @param userPhone 用户手机号
+ * @return 提现结果
+ */
+ @GetMapping(value = "/withdraw/confirmWithdrawByUser")
+ R<Boolean> confirmWithdrawByUser(@RequestParam("orderId") String orderId,
+ @RequestParam("userId") Integer userId,
+ @RequestParam("openId") String openId,
+ @RequestParam("userPhone") String userPhone);
+
+ /**
+ * 用户订单列表
+ *
+ * @param userId 用户id
+ * @param pageNum 页码
+ * @param pageSize 条数
+ * @return 订单列表
+ */
+ @GetMapping("/withdraw/withdrawListByUser")
+ R<Page<Order>> withdrawListByUser(@RequestParam("userId") Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ @GetMapping("/withdraw/withdrawRecordList")
+ @ApiOperation(value = "用户提现申请记录", tags = {"用户端"})
+ R<Page<Withdraw>> withdrawRecordList(@RequestParam("userId") Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize);
+
+ /**
+ * 提现订单详情
+ *
+ * @param orderId 订单id
+ * @return 订单详情
+ */
+ @GetMapping("/withdraw/withdrawDetailByUser")
+ R<WithdrawDetailVO> withdrawDetailByUser(@RequestParam("orderId") String orderId);
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..df996de
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1,6 @@
+com.ruoyi.order.api.factory.OrderFallbackFactory
+com.ruoyi.order.api.factory.ExchangeDispatchFallbackFactory
+com.ruoyi.order.api.factory.EvaluateFallbackFactory
+com.ruoyi.order.api.factory.ServeCoordinateFallbackFactory
+com.ruoyi.order.api.factory.ServeRecordFallbackFactory
+com.ruoyi.order.api.factory.WithdrawFallbackFactory
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
index 154d914..563e508 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
@@ -72,6 +72,10 @@
@NotBlank(message = "请选择:账号所属角色")
private Long roleId;
+ @ApiModelProperty("所属加盟商id")
+ @TableField("franchisee_id")
+ private Integer franchiseeId;
+
public SysUser() {
}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java
index 3be5572..cda391a 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java
@@ -4,6 +4,7 @@
import lombok.Data;
import java.io.Serializable;
+import java.util.List;
import java.util.Set;
/**
@@ -61,6 +62,16 @@
private Long roleId;
/**
+ * 登录账号是否为加盟商
+ */
+ private Boolean isFranchisee;
+
+ /**
+ * 加盟商所管辖城市
+ */
+ private List<String> cityList;
+
+ /**
* 用户信息
*/
private SysUser sysUser;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserInfo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserInfo.java
index 4bc54a9..2f4bfbd 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserInfo.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserInfo.java
@@ -46,4 +46,13 @@
*/
private String ipaddr;
+ /**
+ * 是否可以登录
+ * 该字段用于师傅端 - 互斥登录
+ */
+ private Boolean isCanLogin;
+
+ public LoginUserInfo() {
+ this.isCanLogin = Boolean.TRUE;
+ }
}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
index e699be8..1a50711 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -65,6 +65,11 @@
LoginUser userInfo = userResult.getData();
SysUser user = userResult.getData().getSysUser();
+ if (user.getFranchiseeId() == null) {
+ userInfo.setIsFranchisee(Boolean.FALSE);
+ }else {
+ userInfo.setIsFranchisee(Boolean.TRUE);
+ }
if (UserStatus.DELETED.getCode().equals(user.getIsDelete())) {
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml
index f6a6cc3..c905ced 100644
--- a/ruoyi-auth/src/main/resources/bootstrap.yml
+++ b/ruoyi-auth/src/main/resources/bootstrap.yml
@@ -18,15 +18,21 @@
nacos:
discovery:
# 服务注册地址
- server-addr: 127.0.0.1:8848
+ server-addr: localhost:8848
service: ${spring.application.name}
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
config:
# 配置中心地址
- server-addr: 127.0.0.1:8848
+ server-addr: localhost:8848
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
name: ${spring.application.name}
# 配置文件格式
file-extension: yml
diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml
index eb2007e..a37de1b 100644
--- a/ruoyi-common/ruoyi-common-core/pom.xml
+++ b/ruoyi-common/ruoyi-common-core/pom.xml
@@ -10,19 +10,26 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-common-core</artifactId>
-
+
<description>
ruoyi-common-core核心模块
</description>
<dependencies>
+ <!--腾讯云文件上传-->
+ <dependency>
+ <groupId>com.qcloud</groupId>
+ <artifactId>cos_api</artifactId>
+ <version>5.6.89</version>
+ </dependency>
+
<!-- SpringCloud Openfeign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
-
+
<!-- SpringCloud Loadbalancer -->
<dependency>
<groupId>org.springframework.cloud</groupId>
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
index 18e0e24..aaa8321 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
@@ -13,6 +13,11 @@
public final static long EXPIRATION = 720;
/**
+ * 师傅端登录缓存 一个月
+ */
+ public final static long EXPIRE_TIME_WORKER = 43200;
+
+ /**
* 缓存刷新时间,默认120(分钟)
*/
public final static long REFRESH_TIME = 120;
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
index b087c3c..26d7a71 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
@@ -9,7 +9,7 @@
/**
* 微信获取授权openId地址
*/
- public static final String WX_OPENID_ADDRESS = "https://api.weixin.qq.com/sns/jscode2sess";
+ public static final String WX_OPENID_ADDRESS = "https://api.weixin.qq.com/sns/jscode2session";
/**
* UTF-8 字符集
@@ -188,6 +188,16 @@
public static final String REJECT_STR = "已驳回";
/**
+ * 家电以旧换新
+ */
+ public static final String TRADE_IN = "家电以旧换新";
+
+ /**
+ * 预约上门回收
+ */
+ public static final String RECOVERY = "预约上门回收";
+
+ /**
* 数字60
*/
public static final Integer SIXTY = 60;
@@ -228,6 +238,11 @@
public static final Integer SIX = 6;
/**
+ * 数字10
+ */
+ public static final Integer TEN = 10;
+
+ /**
* 数字18
*/
public static final Integer EIGHTEEN = 18;
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstants.java
index 4434710..dec6bd5 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstants.java
@@ -32,5 +32,10 @@
*/
public final static String ADDRESS_TREE = "regin_tree";
+ /**
+ * 市区列表
+ */
+ public final static String URBAN_AREA = "urban_area";
+
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
index c5671e6..693bb18 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
@@ -33,6 +33,11 @@
public static final String ADMIN_SERVICE = "ruoyi-admin";
/**
+ * 后台服务
+ */
+ public static final String ORDER_SERVICE = "ruoyi-order";
+
+ /**
* 师傅端服务
*/
public static final String WORKER_SERVICE = "ruoyi-worker";
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java
index 9b3ac77..b78f6fd 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java
@@ -61,6 +61,10 @@
return restResult(data, FAIL, msg);
}
+ public static <T> R<T> fail(T data, Integer code, String msg) {
+ return restResult(data, code, msg);
+ }
+
public static <T> R<T> fail(int code, String msg) {
return restResult(null, code, msg);
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java
index 278b195..3aedecf 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java
@@ -14,6 +14,11 @@
private String message;
/**
+ * 错误码
+ */
+ private Integer code;
+
+ /**
* 错误明细,内部调试错误
* <p>
* 和 {@link CommonResult#getDetailMessage()} 一致的设计
@@ -26,8 +31,17 @@
public GlobalException() {
}
+ public GlobalException(Integer code) {
+ this.code = code;
+ }
+
public GlobalException(String message) {
this.message = message;
+ }
+
+ public GlobalException(String message, Integer code) {
+ this.message = message;
+ this.code = code;
}
public String getDetailMessage() {
@@ -48,4 +62,12 @@
this.message = message;
return this;
}
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java
index 149b7d6..4fcbc50 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java
@@ -160,7 +160,7 @@
* @param destination 目的地经纬度
* @return 路线规划信息
*/
- public static Object routing(String origin, String destination) {
+ public static Path routing(String origin, String destination) {
String baseUrl = "https://restapi.amap.com/v3/direction/driving?origin=%s&destination=%s" +
"&extensions=all&output=json&key=%s";
String requestUrl = String.format(baseUrl, origin, destination, GAO_DE_KEY);
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/PolylineData.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/PolylineData.java
index a5f9c71..be1ecf7 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/PolylineData.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/PolylineData.java
@@ -22,4 +22,6 @@
this.latitude = latitude;
}
+ public PolylineData() {
+ }
}
diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
index acf76cd..20e1db5 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
+++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
@@ -240,4 +240,9 @@
public Collection<String> keys(final String pattern) {
return redisTemplate.keys(pattern);
}
+
+ public Set getKeysPrefix(String accessToken) {
+ return redisTemplate.keys(accessToken + "*");
+ }
+
}
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java
index 8c641b5..27ddb98 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java
@@ -143,7 +143,7 @@
*/
@ExceptionHandler(GlobalException.class)
public R<String> handleDemoModeException(GlobalException g) {
- return R.fail(g.getMessage());
+ return R.fail(null, g.getCode(), g.getMessage());
}
/**
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
index 28b3df6..6d51e96 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -1,7 +1,9 @@
package com.ruoyi.common.security.service;
+import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.constant.SecurityConstants;
+import com.ruoyi.common.core.exception.GlobalException;
import com.ruoyi.common.core.utils.JwtUtils;
import com.ruoyi.common.core.utils.ServletUtils;
import com.ruoyi.common.core.utils.StringUtils;
@@ -19,6 +21,7 @@
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
@@ -110,9 +113,9 @@
claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
// 接口返回信息
- Map<String, Object> rspMap = new HashMap<String, Object>();
+ Map<String, Object> rspMap = new HashMap<String, Object>(8);
rspMap.put("access_token", JwtUtils.createToken(claimsMap));
- rspMap.put("expires_in", expireTime);
+ rspMap.put("expires_in", CacheConstants.EXPIRE_TIME_WORKER);
return rspMap;
}
@@ -221,14 +224,22 @@
*/
public LoginUserInfo getLoginUserByWorker(String token) {
LoginUserInfo user = null;
- try {
- if (StringUtils.isNotEmpty(token)) {
- String userkey = JwtUtils.getUserKeyByWorker(token);
- user = redisService.getCacheObject(getTokenKeyByWorker(userkey));
- return user;
+ if (StringUtils.isNotEmpty(token)) {
+ String userkey = JwtUtils.getUserKeyByWorker(token);
+ user = redisService.getCacheObject(getTokenKeyByWorker(userkey));
+ // 再次判断登录状态是否已过期
+ if (null == user) {
+ throw new GlobalException("登录信息已过期,请重新登录!", 504);
}
- } catch (Exception e) {
- log.error("获取用户信息异常'{}'", e.getMessage());
+ // 优先判断当前账号是否已在其他设备登录
+ if (!user.getIsCanLogin()) {
+ throw new GlobalException("当前登录账号在其他设备登录!", 505);
+ }
+ // 再次判断登录状态是否已过期
+ if (System.currentTimeMillis() > user.getExpireTime()) {
+ throw new GlobalException("登录信息已过期,请重新登录!", 504);
+ }
+ return user;
}
return user;
}
@@ -317,11 +328,29 @@
* @param loginUserInfo 登录信息
*/
public void refreshTokenByWorker(LoginUserInfo loginUserInfo) {
+ // 获取所有 login_tokens_study: 前缀的登录缓存
+ Set redisCache = redisService.getKeysPrefix(CacheConstants.LOGIN_WORKER_TOKEN_KEY);
+ for (Object key : redisCache) {
+ String strKey = String.valueOf(key);
+ // 根据 login_tokens:加密token 获取用户登录信息
+ Object redisCacheUserInfo = redisService.getCacheObject(strKey);
+ LoginUserInfo redisUserInfo = JSONObject.parseObject(JSONObject.toJSONString(redisCacheUserInfo), LoginUserInfo.class);
+ // 单点逻辑,如果当前用户已处于登录状态并再次登录,则清除该用户上一次登录token
+ if (loginUserInfo.getUserid().equals(redisUserInfo.getUserid())) {
+ // 被挤账户 可登录状态 已经为 false时,跳出循环
+ if (!redisUserInfo.getIsCanLogin()) {
+ continue;
+ }
+ // 设置能否登录字段为 否,当该token登录时,isCanLogin为false表示账号被挤
+ redisUserInfo.setIsCanLogin(Boolean.FALSE);
+ redisService.setCacheObject(strKey, redisUserInfo, redisService.getExpire(strKey), TimeUnit.SECONDS);
+ }
+ }
loginUserInfo.setLoginTime(System.currentTimeMillis());
- loginUserInfo.setExpireTime(loginUserInfo.getLoginTime() + expireTime * MILLIS_MINUTE);
+ loginUserInfo.setExpireTime(loginUserInfo.getLoginTime() + CacheConstants.EXPIRE_TIME_WORKER * MILLIS_MINUTE);
// 根据uuid将loginUser缓存
String userKey = getTokenKeyByWorker(loginUserInfo.getToken());
- redisService.setCacheObject(userKey, loginUserInfo, expireTime, TimeUnit.MINUTES);
+ redisService.setCacheObject(userKey, loginUserInfo, CacheConstants.EXPIRE_TIME_WORKER, TimeUnit.MINUTES);
}
private String getTokenKey(String token) {
diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml
index 6b526ca..2fac5b9 100644
--- a/ruoyi-gateway/src/main/resources/bootstrap.yml
+++ b/ruoyi-gateway/src/main/resources/bootstrap.yml
@@ -14,16 +14,22 @@
nacos:
discovery:
# 服务注册地址
- server-addr: 127.0.0.1:8848
+ server-addr: localhost:8848
service: ${spring.application.name}
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+# username: nacos
+# password: jdhs_nacos!
config:
# 配置中心地址
- server-addr: 127.0.0.1:8848
+ server-addr: localhost:8848
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
name: ${spring.application.name}
+ # 线上nacos需要鉴权
+# username: nacos
+# password: jdhs_nacos!
# 配置文件格式
file-extension: yml
# 共享配置
@@ -34,12 +40,12 @@
eager: true
transport:
# 控制台地址
- dashboard: 127.0.0.1:8718
+ dashboard: localhost:8718
# nacos配置持久化
datasource:
ds1:
nacos:
- server-addr: 127.0.0.1:8848
+ server-addr: localhost:8848
dataId: sentinel-ruoyi-gateway
groupId: DEFAULT_GROUP
data-type: json
diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml
index 9b665d3..bd6fb24 100644
--- a/ruoyi-modules/ruoyi-system/pom.xml
+++ b/ruoyi-modules/ruoyi-system/pom.xml
@@ -16,6 +16,12 @@
</description>
<dependencies>
+
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-api-admin</artifactId>
+ <version>3.6.4</version>
+ </dependency>
<!-- SpringCloud Alibaba Nacos -->
<dependency>
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
index 1e17891..9e91884 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.admin.api.feignClient.AdminClient;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
@@ -27,6 +28,7 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Set;
@@ -45,16 +47,13 @@
@Autowired
private ISysRoleService roleService;
-
-
@Autowired
private ISysPostService postService;
-
@Autowired
private ISysPermissionService permissionService;
- @Autowired
- private ISysConfigService configService;
+ @Resource
+ private AdminClient adminClient;
@GetMapping("/page")
@ApiImplicitParams({
@@ -134,6 +133,10 @@
sysUserVo.setRole(roles.getRoleName());
sysUserVo.setRoleId(roles.getRoleId());
sysUserVo.setPermissions(permissions);
+ if (null != sysUser.getFranchiseeId()) {
+ List<String> data = adminClient.cityDetail(sysUser.getFranchiseeId()).getData();
+ sysUserVo.setCityList(data);
+ }
return R.ok(sysUserVo);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
index 5bd680d..b3c6d29 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -1,15 +1,19 @@
-# Tomcat
-server:
- port: 9201
-
# Spring
-spring:
+spring:
application:
# 应用名称
name: ruoyi-system
+ main:
+ allow-bean-definition-overriding: true
profiles:
# 环境配置
active: dev
+
+---
+spring:
+ config:
+ activate:
+ on-profile: dev
cloud:
nacos:
discovery:
@@ -18,14 +22,20 @@
service: ${spring.application.name}
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
- name: ${spring.application.name}
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
+ name: ${spring.application.name}
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+ - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
\ No newline at end of file
diff --git a/ruoyi-service/pom.xml b/ruoyi-service/pom.xml
index 7eefd72..bb8c612 100644
--- a/ruoyi-service/pom.xml
+++ b/ruoyi-service/pom.xml
@@ -16,6 +16,7 @@
<module>ruoyi-user</module>
<module>ruoyi-admin</module>
<module>ruoyi-worker</module>
+ <module>ruoyi-order</module>
</modules>
<dependencies>
diff --git a/ruoyi-service/ruoyi-admin/pom.xml b/ruoyi-service/ruoyi-admin/pom.xml
index 7d072bb..04f5b26 100644
--- a/ruoyi-service/ruoyi-admin/pom.xml
+++ b/ruoyi-service/ruoyi-admin/pom.xml
@@ -102,12 +102,13 @@
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
- <artifactId>ruoyi-api-system</artifactId>
+ <artifactId>ruoyi-api-user</artifactId>
<version>3.6.4</version>
</dependency>
+
<dependency>
<groupId>com.ruoyi</groupId>
- <artifactId>ruoyi-api-user</artifactId>
+ <artifactId>ruoyi-api-order</artifactId>
<version>3.6.4</version>
</dependency>
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/config/CosClientConfig.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/config/CosClientConfig.java
new file mode 100644
index 0000000..0dbeab1
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/config/CosClientConfig.java
@@ -0,0 +1,51 @@
+package com.ruoyi.admin.config;
+
+import com.qcloud.cos.COSClient;
+import com.qcloud.cos.ClientConfig;
+import com.qcloud.cos.auth.BasicCOSCredentials;
+import com.qcloud.cos.auth.COSCredentials;
+import com.qcloud.cos.region.Region;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 腾讯云对象存储客户端
+ * @author HJL
+ */
+@Configuration
+@ConfigurationProperties(prefix = "cos.client")
+@Data
+public class CosClientConfig {
+
+ /**
+ * accessKey
+ */
+ private String accessKey;
+
+ /**
+ * secretKey
+ */
+ private String secretKey;
+
+ /**
+ * 区域
+ */
+ private String region;
+
+ /**
+ * 桶名
+ */
+ private String bucket;
+
+ @Bean
+ public COSClient cosClient() {
+ // 初始化用户身份信息(secretId, secretKey)
+ COSCredentials cred = new BasicCOSCredentials(accessKey, secretKey);
+ // 设置bucket的区域, COS地域的简称请参照 https://www.qcloud.com/document/product/436/6224
+ ClientConfig clientConfig = new ClientConfig(new Region(region));
+ // 生成cos客户端
+ return new COSClient(cred, clientConfig);
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/config/MyDateObjectHandler.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/config/MyDateObjectHandler.java
index f2b90a4..b6c0c71 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/config/MyDateObjectHandler.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/config/MyDateObjectHandler.java
@@ -35,7 +35,7 @@
// 是否软删除
this.setFieldValByName("isDelete", 0, metaObject);
// 是否启用 默认启用
- this.setFieldValByName("delFlag", 0, metaObject);
+ this.setFieldValByName("delFlag", "0", metaObject);
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java
index b24c938..07afa83 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java
@@ -1,22 +1,14 @@
package com.ruoyi.admin.controller;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.admin.entity.ChangeDispatch;
import com.ruoyi.admin.entity.MasterWorker;
-import com.ruoyi.admin.entity.Order;
-import com.ruoyi.admin.service.ChangeDispatchService;
import com.ruoyi.admin.service.MasterWorkerService;
-import com.ruoyi.admin.service.OrderService;
import com.ruoyi.admin.sorcket.WebSocketServer;
-import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.exception.GlobalException;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.order.api.entity.ChangeDispatch;
+import com.ruoyi.order.api.feignClient.ExchangeDispatchClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -25,9 +17,6 @@
import javax.annotation.Resource;
import java.io.IOException;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
/**
* <p>
@@ -43,9 +32,7 @@
public class ChangeDispatchController {
@Resource
- private ChangeDispatchService changeDispatchService;
- @Resource
- private OrderService orderService;
+ private ExchangeDispatchClient dispatchClient;
@Resource
private MasterWorkerService masterWorkerService;
@@ -65,15 +52,10 @@
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<ChangeDispatch>> queryPageList(String workerName, String orderNumber, String userName,
- @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
- @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
- LambdaQueryChainWrapper<ChangeDispatch> wrapper = changeDispatchService.lambdaQuery();
- wrapper = StringUtils.isNotBlank(workerName) ? wrapper.like(ChangeDispatch::getWorkerName, workerName) : wrapper;
- wrapper = StringUtils.isNotBlank(orderNumber) ? wrapper.like(ChangeDispatch::getOrderNumber, orderNumber) : wrapper;
- wrapper = StringUtils.isNotBlank(userName) ? wrapper.like(ChangeDispatch::getUserName, userName) : wrapper;
- return R.ok(wrapper.eq(ChangeDispatch::getIsDelete, 0)
- .orderByDesc(ChangeDispatch::getCreateTime).page(Page.of(pageNum, pageSize)));
+ public R<Page<ChangeDispatch>> queryPageList(String workerName, String orderNumber, String userName,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return dispatchClient.queryPageList(workerName, orderNumber, userName, pageNum, pageSize);
}
/**
@@ -84,18 +66,7 @@
@ApiOperation(value = "新增订单改派", tags = {"后台-系统设置-订单改派管理"})
@PostMapping(value = "/save")
public R<Boolean> save(@RequestBody ChangeDispatch changeDispatch) {
- return R.ok(changeDispatchService.save(changeDispatch));
- }
-
- /**
- * 订单改派 -远程调用
- *
- * @param changeDispatch 订单改派信息
- */
- @ApiOperation(value = "新增订单改派", tags = {"后台-系统设置-订单改派管理"})
- @PostMapping(value = "/changeDispatchSave")
- public R<Boolean> changeDispatchSave(@RequestBody ChangeDispatch changeDispatch) {
- return R.ok(changeDispatchService.save(changeDispatch));
+ return R.ok(dispatchClient.save(changeDispatch).getData());
}
/**
@@ -109,42 +80,8 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "订单改派id", name = "id", dataType = "Integer", required = true)
})
- public R<ChangeDispatch> detail(@RequestParam Integer id) {
- return R.ok(changeDispatchService.getById(id));
- }
-
- /**
- * 订单改派详情 远程调用
- *
- * @param id 订单id
- */
- @GetMapping(value = "/one")
- @ApiImplicitParams({
- @ApiImplicitParam(value = "订单改派id", name = "id", dataType = "Integer", required = true)
- })
- public R<ChangeDispatch> one(@RequestParam("id") Integer id) {
- ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery()
- .eq(ChangeDispatch::getOrderId, id)
- .eq(ChangeDispatch::getState, Constants.ZERO)
- .one();
- return R.ok(changeDispatch);
- }
-
- /**
- * 订单改派详情 远程调用
- *
- * @param id 订单id
- */
- @GetMapping(value = "/changeDispatchOne")
- @ApiImplicitParams({
- @ApiImplicitParam(value = "订单改派id", name = "id", dataType = "Integer", required = true)
- })
- public R<ChangeDispatch> changeDispatchOne(@RequestParam("id") Integer id) {
- ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery()
- .eq(ChangeDispatch::getOrderId, id)
- .eq(ChangeDispatch::getState, Constants.ZERO)
- .one();
- return R.ok(changeDispatch);
+ public R<ChangeDispatch> detail(@RequestParam String id) {
+ return dispatchClient.detail(id);
}
/**
@@ -159,10 +96,22 @@
@ApiImplicitParam(value = "多条订单改派id ',' 拼接", name = "ids", dataType = "String", required = true)
})
public R<String> batchDelete(@RequestParam String ids) {
- List<String> idList = Arrays.stream(ids.split(",")).collect(Collectors.toList());
- List<ChangeDispatch> list = changeDispatchService.lambdaQuery().in(ChangeDispatch::getId, idList).list();
- list.forEach(data -> data.setIsDelete(1));
- return changeDispatchService.updateBatchById(list) ? R.ok() : R.fail();
+ return dispatchClient.batchDelete(ids);
+ }
+
+ /**
+ * 拒绝订单改派申请
+ *
+ * @param id 改派申请记录id
+ */
+ @RequiresPermissions("reassignment_apply")
+ @ApiOperation(value = "拒绝订单改派申请", tags = {"后台-系统设置-订单改派管理"})
+ @GetMapping(value = "/refuse")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "改派申请记录id", name = "id", dataType = "String", required = true)
+ })
+ public R<Boolean> refuse(@RequestParam("id") String id) {
+ return dispatchClient.refuseChangeDispatch(id);
}
/**
@@ -178,45 +127,23 @@
@ApiImplicitParam(value = "改派订单id", name = "changeId", dataType = "Integer", required = true),
@ApiImplicitParam(value = "师傅id", name = "workerId", dataType = "Integer", required = true)
})
- public R<String> changeWorker(@RequestParam Integer changeId, @RequestParam Integer workerId) {
- ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery().eq(ChangeDispatch::getId, changeId)
- .eq(ChangeDispatch::getIsDelete, 0).one();
- if (null == changeDispatch || Constants.ONE.equals(changeDispatch.getState())) {
- throw new GlobalException("改派申请不存在或已改派!");
- }
- Order order = orderService.lambdaQuery().eq(Order::getId, changeDispatch.getOrderId())
- .eq(Order::getIsDelete, 0).one();
- if (null == order) {
- throw new GlobalException("订单不存在!");
- }
- MasterWorker masterWorker = masterWorkerService.lambdaQuery().eq(MasterWorker::getId, workerId)
- .eq(MasterWorker::getIsDelete, 0).one();
- // 师傅信息
+ public R<String> changeWorker(@RequestParam String changeId, @RequestParam Integer workerId) {
+ MasterWorker masterWorker = masterWorkerService.lambdaQuery()
+ .eq(MasterWorker::getId, workerId).eq(MasterWorker::getIsDelete, 0).one();
if (null == masterWorker) {
- throw new GlobalException("服务人员信息异常!");
+ return R.fail("师傅信息异常!");
}
- // 原订单状态改为 5:已改派
- order.setState(Constants.FIVE);
- boolean orderUpdate = orderService.updateById(order);
- // 生成新订单信息
- Order newOrder = new Order();
- BeanUtils.copyProperties(order, newOrder);
- newOrder.setId(null);
- newOrder.setServerId(workerId);
- newOrder.setServerName(masterWorker.getRealName());
- newOrder.setServerPhone(masterWorker.getPhone());
- newOrder.setState(Constants.ONE);
- // 构建新订单
- boolean save = orderService.save(newOrder);
- // 改派信息
- boolean update = changeDispatchService.lambdaUpdate().set(ChangeDispatch::getState, 1)
- .eq(ChangeDispatch::getId, changeId).eq(ChangeDispatch::getIsDelete, 0).update();
- try {
- WebSocketServer.sendInfo("您有一条新的订单,请注意查收!", String.valueOf(workerId));
- return orderUpdate && save && update ? R.ok() : R.fail();
- } catch (IOException e) {
- return R.fail("师傅不在线!");
+ Boolean data = dispatchClient.changeWorker(changeId, workerId, masterWorker.getRealName(),
+ masterWorker.getPhone()).getData();
+ if (null != data && data) {
+ try {
+ WebSocketServer.sendInfo("您有一条新的订单,请注意查收!", String.valueOf(workerId));
+ return R.ok();
+ } catch (IOException e) {
+ return R.fail("师傅不在线!");
+ }
}
+ return R.fail("订单推送异常!");
}
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/EvaluateController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/EvaluateController.java
index 4c1bc37..50b526d 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/EvaluateController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/EvaluateController.java
@@ -1,13 +1,12 @@
package com.ruoyi.admin.controller;
-import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.admin.entity.Evaluate;
-import com.ruoyi.admin.service.EvaluateService;
-import com.ruoyi.admin.vo.EvaluatePageVO;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.order.api.entity.Evaluate;
+import com.ruoyi.order.api.entity.EvaluatePageVO;
+import com.ruoyi.order.api.feignClient.EvaluateClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -18,9 +17,6 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
/**
* <p>
@@ -36,7 +32,7 @@
public class EvaluateController {
@Resource
- private EvaluateService evaluateService;
+ private EvaluateClient evaluateClient;
/**
* 订单评价分页列表
@@ -54,10 +50,10 @@
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<EvaluatePageVO>> queryPageList(String userNo, String orderNumber, String workerName,
- @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
- @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
- return R.ok(evaluateService.queryPageList(userNo, orderNumber, workerName, Page.of(pageNum, pageSize)));
+ public R<Page<EvaluatePageVO>> queryPageList(String userNo, String orderNumber, String workerName,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return evaluateClient.queryPageList(userNo, orderNumber, workerName, pageNum, pageSize);
}
/**
@@ -72,7 +68,7 @@
@ApiImplicitParam(value = "订单评价id", name = "id", dataType = "Integer", required = true)
})
public R<Evaluate> detail(@RequestParam Integer id) {
- return R.ok(evaluateService.getById(id));
+ return evaluateClient.detail(id);
}
/**
@@ -87,10 +83,7 @@
@ApiImplicitParam(value = "多条订单评价id ',' 拼接", name = "ids", dataType = "String", required = true)
})
public R<String> batchDelete(@RequestParam String ids) {
- List<String> idList = Arrays.stream(ids.split(",")).collect(Collectors.toList());
- List<Evaluate> list = evaluateService.lambdaQuery().in(Evaluate::getId, idList).list();
- list.forEach(data -> data.setIsDelete(1));
- return evaluateService.updateBatchById(list) ? R.ok() : R.fail();
+ return evaluateClient.batchDelete(ids);
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java
index 85e8c4f..9d42088 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java
@@ -5,7 +5,11 @@
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.admin.entity.Franchisee;
+import com.ruoyi.admin.entity.SysUser;
+import com.ruoyi.admin.entity.UserRole;
import com.ruoyi.admin.service.FranchiseeService;
+import com.ruoyi.admin.service.SysUserService;
+import com.ruoyi.admin.service.UserRoleService;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.GlobalException;
@@ -39,6 +43,10 @@
@Resource
private FranchiseeService franchiseeService;
+ @Resource
+ private SysUserService sysUserService;
+ @Resource
+ private UserRoleService userRoleService;
/**
* 加盟商信息分页列表
@@ -80,8 +88,23 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "加盟商信息id", name = "id", dataType = "Integer", required = true)
})
- public R<Franchisee> detail(@RequestParam Integer id) {
- return R.ok(franchiseeService.getById(id));
+ public R<Franchisee> detail(@RequestParam("id") Integer id) {
+ return R.ok(franchiseeService.lambdaQuery()
+ .eq(Franchisee::getId, id).eq(Franchisee::getIsDelete, 0).one());
+ }
+
+ /**
+ * 加盟商管辖城市详情
+ * -- 远程调用
+ *
+ * @param id 加盟商信息id
+ */
+ @ApiOperation(value = "加盟商管辖城市详情", tags = {"后台-加盟商管理"})
+ @GetMapping(value = "/cityDetail")
+ public R<List<String>> cityDetail(@RequestParam("id") Integer id) {
+ Franchisee franchisee = franchiseeService.lambdaQuery()
+ .eq(Franchisee::getId, id).eq(Franchisee::getIsDelete, 0).one();
+ return R.ok(Arrays.stream(franchisee.getCity().split(",")).collect(Collectors.toList()));
}
/**
@@ -93,12 +116,27 @@
@ApiOperation(value = "新增加盟商信息", tags = {"后台-加盟商管理"})
@PostMapping(value = "/save")
public R<String> save(@RequestBody @Validated Franchisee franchisee) {
- checkFranchisee(franchisee);
if (null == franchisee.getAdminPassword() || StringUtils.isBlank(franchisee.getAdminPassword())) {
throw new GlobalException("请输入管理员初始密码!");
}
+ String md5Password = checkFranchisee(franchisee);
+ boolean save = franchiseeService.save(franchisee);
+ // 生成sysUser账号
+ SysUser sysUser = new SysUser();
+ sysUser.setFranchiseeId(franchisee.getId());
+ sysUser.setNickName(franchisee.getName());
+ sysUser.setAccount(franchisee.getAdminAccount());
+ sysUser.setPassword(md5Password);
+ sysUser.setIsEnable(Constants.ONE);
+ sysUser.setIsDelete(Constants.ZERO);
+ save = save && sysUserService.save(sysUser);
+ // 添加账号与角色关联
+ UserRole userRole = new UserRole();
+ userRole.setUserId(sysUser.getUserId());
+ userRole.setRoleId(franchisee.getRoleId().longValue());
+ save = save && userRoleService.save(userRole);
//franchisee.setCityStr(String.valueOf(franchisee.getCityArr()));
- return franchiseeService.save(franchisee) ? R.ok() : R.fail();
+ return save ? R.ok() : R.fail();
}
/**
@@ -110,7 +148,27 @@
@ApiOperation(value = "修改加盟商信息", tags = {"后台-加盟商管理"})
@PostMapping(value = "/update")
public R<String> update(@RequestBody @Validated Franchisee franchisee) {
- checkFranchisee(franchisee);
+ String md5Password = checkFranchisee(franchisee);
+ SysUser sysUser = sysUserService.lambdaQuery()
+ .eq(SysUser::getFranchiseeId, franchisee.getId())
+ .eq(SysUser::getIsDelete, Constants.ZERO).one();
+ if (null == sysUser) {
+ sysUser = new SysUser();
+ sysUser.setNickName(franchisee.getName());
+ sysUser.setAccount(franchisee.getAdminAccount());
+ sysUser.setPassword(md5Password);
+ sysUser.setIsEnable(franchisee.getIsEnable());
+ sysUser.setIsDelete(Constants.ZERO);
+ sysUserService.save(sysUser);
+ } else {
+ // 生成sysUser账号
+ sysUser.setNickName(franchisee.getName());
+ sysUser.setAccount(franchisee.getAdminAccount());
+ sysUser.setPassword(md5Password);
+ sysUser.setIsEnable(franchisee.getIsEnable());
+ sysUserService.updateById(sysUser);
+ }
+
return franchiseeService.updateById(franchisee) ? R.ok() : R.fail();
}
@@ -130,6 +188,10 @@
public R<String> enable(@RequestParam Integer id, @RequestParam Integer enable) {
boolean update = franchiseeService.lambdaUpdate().set(Franchisee::getIsEnable, enable)
.eq(Franchisee::getId, id).update();
+ // 启动/关闭后台账号
+ sysUserService.lambdaUpdate()
+ .eq(SysUser::getFranchiseeId, id)
+ .set(SysUser::getIsEnable, enable).update();
return update ? R.ok() : R.fail();
}
@@ -138,20 +200,39 @@
*
* @param franchisee 加盟商信息
*/
- private void checkFranchisee(Franchisee franchisee) {
- String city = franchisee.getCity();
- List<String> cityList = Arrays.stream(city.split(",")).collect(Collectors.toList());
- for (String c : cityList) {
- Franchisee one = franchiseeService.lambdaQuery().like(Franchisee::getCity, c)
- .eq(Franchisee::getIsDelete, 0).one();
- if (null != one) {
- throw new GlobalException("当前所选城市中 " + c + " 已有加盟商所管辖!");
- }
+ private String checkFranchisee(Franchisee franchisee) {
+ LambdaQueryChainWrapper<Franchisee> wrapper = franchiseeService.lambdaQuery()
+ .eq(Franchisee::getAdminAccount, franchisee.getAdminAccount())
+ .eq(Franchisee::getIsDelete, 0);
+ // 校验账号是否唯一
+ Franchisee only;
+ if (null == franchisee.getId()) {
+ only = wrapper.one();
+ } else {
+ only = wrapper.ne(Franchisee::getId, franchisee.getId()).one();
}
+ // 校验后台账号是否存在当前账号
+ SysUser user = sysUserService.lambdaQuery()
+ .eq(SysUser::getAccount, franchisee.getAdminAccount())
+ .eq(SysUser::getIsDelete, Constants.ZERO)
+ .eq(SysUser::getFranchiseeId, null).one();
+ if (null != only || null != user) {
+ throw new GlobalException("该账号已存在!");
+ }
+// String city = franchisee.getCity();
+// List<String> cityList = Arrays.stream(city.split(",")).collect(Collectors.toList());
+// for (String c : cityList) {
+// Franchisee one = franchiseeService.lambdaQuery().like(Franchisee::getCity, c)
+// .eq(Franchisee::getIsDelete, 0).one();
+// if (null != one) {
+// throw new GlobalException("当前所选城市中 " + c + " 已有加盟商所管辖!");
+// }
+// }
// MD5加密登录密码(新)
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
- String md5Password = passwordEncoder.encode(Constants.DEFAULT_PASSWORD);
+ String md5Password = passwordEncoder.encode(franchisee.getAdminPassword());
franchisee.setAdminPassword(md5Password);
+ return md5Password;
}
/**
@@ -169,6 +250,10 @@
List<String> idList = Arrays.stream(ids.split(",")).collect(Collectors.toList());
List<Franchisee> list = franchiseeService.lambdaQuery().in(Franchisee::getId, idList).list();
list.forEach(data -> data.setIsDelete(1));
+ // 删除对应sysUser账号
+ sysUserService.lambdaUpdate()
+ .in(SysUser::getFranchiseeId, idList)
+ .set(SysUser::getIsDelete, Constants.ONE).update();
return franchiseeService.updateBatchById(list) ? R.ok() : R.fail();
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/HomePageController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/HomePageController.java
index 982e410..cfcf91e 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/HomePageController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/HomePageController.java
@@ -1,15 +1,16 @@
package com.ruoyi.admin.controller;
-import com.ruoyi.admin.request.OrderCountRequest;
import com.ruoyi.admin.request.UserDataCountRequest;
import com.ruoyi.admin.service.MasterWorkerService;
-import com.ruoyi.admin.service.OrderService;
import com.ruoyi.admin.service.UserService;
import com.ruoyi.admin.vo.MasterWorkerRankVO;
-import com.ruoyi.admin.vo.OrderResultVO;
import com.ruoyi.admin.vo.UserDataCountVO;
import com.ruoyi.admin.vo.UserTrendsVO;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.order.api.entity.OrderCountRequest;
+import com.ruoyi.order.api.entity.OrderResultVO;
+import com.ruoyi.order.api.feignClient.OrderClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
@@ -35,13 +36,14 @@
@Resource
private UserService userService;
@Resource
- private OrderService orderService;
+ private OrderClient orderClient;
/**
* 用户数据统计
*
* @param userDataCountRequest 请求参数
*/
+ @RequiresPermissions("homepage")
@ApiOperation(value = "后台-用户数据统计", tags = {"后台-首页"})
@PostMapping(value = "/userDataCount")
public R<UserDataCountVO> userDataCount(@RequestBody UserDataCountRequest userDataCountRequest) {
@@ -53,6 +55,7 @@
*
* @param cityList 城市列表
*/
+ @RequiresPermissions("homepage")
@ApiOperation(value = "后台-用户增量", tags = {"后台-首页"})
@PostMapping(value = "/userTrends")
public R<List<UserTrendsVO>> userTrends(@RequestBody List<String> cityList) {
@@ -64,10 +67,11 @@
*
* @param orderCount 查询所需参数
*/
+ @RequiresPermissions("homepage")
@ApiOperation(value = "后台-回收订单统计", tags = {"后台-首页"})
@PostMapping(value = "/orderCountHome")
public R<OrderResultVO> orderCountHome(@RequestBody OrderCountRequest orderCount) {
- return R.ok(orderService.orderCountHome(orderCount));
+ return orderClient.orderCountHome(orderCount);
}
/**
@@ -75,6 +79,7 @@
*
* @param cityList 城市集合
*/
+ @RequiresPermissions("homepage")
@ApiOperation(value = "后台-师傅接单排行", tags = {"后台-首页"})
@PostMapping(value = "/workerRanking")
public R<List<MasterWorkerRankVO>> workerRanking(@RequestBody List<String> cityList) {
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MasterWorkerController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MasterWorkerController.java
index 4820535..196eb28 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MasterWorkerController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MasterWorkerController.java
@@ -4,15 +4,15 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.admin.entity.Evaluate;
import com.ruoyi.admin.entity.MasterWorker;
-import com.ruoyi.admin.service.EvaluateService;
import com.ruoyi.admin.service.MasterWorkerService;
import com.ruoyi.admin.vo.MasterWorkerDetailVO;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.order.api.entity.Evaluate;
+import com.ruoyi.order.api.feignClient.EvaluateClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -23,7 +23,6 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
-import java.math.RoundingMode;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -44,7 +43,7 @@
@Resource
private MasterWorkerService masterWorkerService;
@Resource
- private EvaluateService evaluateService;
+ private EvaluateClient evaluateClient;
/**
* 师傅列表分页查询 (添加订单-选择师傅列表)
@@ -52,18 +51,18 @@
@ApiOperation(value = "师傅列表", tags = {"后台-师傅管理"})
@GetMapping(value = "/selectServe")
@ApiImplicitParams({
- @ApiImplicitParam(value = "师傅姓名", name = "name", dataType = "String"),
+ @ApiImplicitParam(value = "师傅姓名", name = "workerName", dataType = "String"),
@ApiImplicitParam(value = "师傅电话", name = "phone", dataType = "String"),
@ApiImplicitParam(value = "服务城市", name = "city", dataType = "String"),
@ApiImplicitParam(value = "账号启用状态", name = "state", dataType = "Integer"),
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页显示条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<MasterWorker>> selectServe(String name, String phone, String city, Integer state,
+ public R<IPage<MasterWorker>> selectServe(String workerName, String phone, String city, Integer state,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
LambdaQueryChainWrapper<MasterWorker> wrapper = masterWorkerService.lambdaQuery();
- wrapper = StringUtils.isNotBlank(name) ? wrapper.like(MasterWorker::getRealName, name) : wrapper;
+ wrapper = StringUtils.isNotBlank(workerName) ? wrapper.like(MasterWorker::getRealName, workerName) : wrapper;
wrapper = StringUtils.isNotBlank(phone) ? wrapper.like(MasterWorker::getPhone, phone) : wrapper;
wrapper = StringUtils.isNotBlank(city) ? wrapper.like(MasterWorker::getCity, city) : wrapper;
if (null != state) {
@@ -81,7 +80,7 @@
@ApiOperation(value = "新增师傅信息", tags = {"后台-师傅管理-师傅列表管理"})
@PostMapping(value = "/save")
public R<String> save(@RequestBody MasterWorker masterWorker) {
- boolean check = masterWorkerService.checkOnlyPhone(masterWorker.getPhone());
+ boolean check = masterWorkerService.checkOnlyPhone(masterWorker.getPhone(), null);
if (check) {
// MD5加密登录密码(新)
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
@@ -118,7 +117,7 @@
@ApiOperation(value = "修改师傅信息", tags = {"后台-师傅管理-师傅列表管理"})
@PostMapping(value = "/update")
public R<String> update(@RequestBody @Validated MasterWorker masterWorker) {
- boolean check = masterWorkerService.checkOnlyPhone(masterWorker.getPhone());
+ boolean check = masterWorkerService.checkOnlyPhone(masterWorker.getPhone(), masterWorker.getId());
if (check) {
return masterWorkerService.updateById(masterWorker) ? R.ok() : R.fail();
} else {
@@ -163,14 +162,12 @@
MasterWorkerDetailVO workerDetail = new MasterWorkerDetailVO();
BeanUtils.copyProperties(worker, workerDetail);
// 计算服务星级
- List<Evaluate> evaluateList = evaluateService.lambdaQuery().eq(Evaluate::getWorkerId, workerId)
- .eq(Evaluate::getIsDelete, 0).list();
- List<BigDecimal> star = evaluateList.stream().map(Evaluate::getStarRating).collect(Collectors.toList());
+ List<Evaluate> evaluateList = evaluateClient.evaluateByWorkerId(worker.getId()).getData();
+ List<Double> star = evaluateList.stream().map(Evaluate::getStarRating).collect(Collectors.toList());
if (!star.isEmpty()) {
// 总评分 / 评价数量
- BigDecimal starRating = star.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
- BigDecimal result = starRating.divide(new BigDecimal(star.size()), 1, RoundingMode.HALF_UP);
- workerDetail.setStarRating(result);
+ double sum = star.stream().mapToDouble(Double::doubleValue).sum();
+ workerDetail.setStarRating(new BigDecimal(sum / star.size()));
}
return R.ok(workerDetail);
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MenuController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MenuController.java
deleted file mode 100644
index 6c2672b..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MenuController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.admin.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 菜单权限表 前端控制器
- * </p>
- *
- * @author hjl
- * @since 2024-06-25
- */
-@RestController
-@RequestMapping("/menu")
-public class MenuController {
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/NoticesController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/NoticesController.java
index f13dd04..46d08fd 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/NoticesController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/NoticesController.java
@@ -55,8 +55,8 @@
/**
* 系统通知列表
+ * -- 远程调用
*/
- @RequiresPermissions("system_notice")
@ApiOperation(value = "系统通知列表(不分页)", tags = {"后台-系统设置-系统通知管理"})
@GetMapping(value = "/noticesList")
public R<List<Notices>> noticesList() {
@@ -66,6 +66,17 @@
/**
* 系统通知详情
+ * -- 远程调用
+ */
+ @ApiOperation(value = "系统通知详情", tags = {"后台-系统设置-系统通知管理"})
+ @GetMapping(value = "/noticesDetail")
+ public R<Notices> noticesDetail(@RequestParam("id") Integer id) {
+ return R.ok(noticesService.lambdaQuery().eq(Notices::getIsDelete, 0)
+ .eq(Notices::getId, id).one());
+ }
+
+ /**
+ * 系统通知详情
*
* @param id 系统通知id
*/
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OldDataController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OldDataController.java
new file mode 100644
index 0000000..58b6fcf
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OldDataController.java
@@ -0,0 +1,372 @@
+/*
+package com.ruoyi.admin.controller;
+
+import com.ruoyi.admin.entity.*;
+import com.ruoyi.admin.service.*;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.domain.R;
+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;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+*/
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-02 14:57
+ *//*
+
+@RestController
+@RequestMapping("/data")
+@Api(tags = {"数据迁移"})
+public class OldDataController {
+
+ @Resource
+ private DataOrderService dataOrderService;
+ @Resource
+ private OrderService orderService;
+ @Resource
+ private EvaluateService evaluateService;
+ @Resource
+ private ServeRecordService serveRecordService;
+ @Resource
+ private DataUserService userService;
+ @Resource
+ private UserService newUserService;
+ @Resource
+ private DataTechnicianService technicianService;
+ @Resource
+ private MasterWorkerService masterWorkerService;
+ @Resource
+ private WorkerProcessService workerProcessService;
+ @Resource
+ private DataAddressService addressService;
+ @Resource
+ private UserRecipientService userRecipientService;
+ @Resource
+ private DataCateService cateService;
+ @Resource
+ private DataGoodsService goodsService;
+ @Resource
+ private RecoveryClassifyService classifyService;
+
+ @GetMapping("/order")
+ @ApiOperation(value = "订单数据迁移", tags = {"数据迁移"})
+ public R<String> oldData(Integer index) {
+ if (null != index && index.equals(8080)) {
+ List<Order> orderList = new ArrayList<>();
+ List<Evaluate> evaluateList = new ArrayList<>();
+ List<ServeRecord> serveRecordList = new ArrayList<>();
+ List<DataOrder> list = dataOrderService.list();
+ for (DataOrder data : list) {
+ Long id = data.getId();
+ Boolean orderType = data.getOrderType();
+ String orderNo = data.getOrderNo();
+ Long productId = data.getProductId();
+ Long uid = data.getUid();
+ Long serverUid = data.getServerUid();
+ BigDecimal price = data.getPrice();
+ BigDecimal btPrice = data.getBtPrice();
+ String username = data.getUsername();
+ String phone = data.getPhone();
+ String province = data.getProvince();
+ String city = data.getCity();
+ String area = data.getArea();
+ String address = data.getAddress();
+ String xxAddress = data.getXxAddress();
+ BigDecimal latitude = data.getLatitude();
+ BigDecimal longitude = data.getLongitude();
+ Date smTime = data.getSmTime();
+ String remark = data.getRemark();
+ String cancelRemark = data.getCancelRemark();
+ Integer pjLevel = data.getPjLevel();
+ String pjRemark = data.getPjRemark();
+ String reason = data.getReason();
+ Date completeTime = data.getCompleteTime();
+ String yhqrtp = data.getYhqrtp();
+ String jjmptp = data.getJjmptp();
+ String njtp = data.getNjtp();
+ String wjhqttp = data.getWjhqttp();
+ Integer drawnum = data.getDrawnum();
+ Integer status = data.getStatus();
+ Boolean jdStatus = data.getJdStatus();
+ String ztServerUid = data.getZtServerUid();
+ Boolean pjStatus = data.getPjStatus();
+ Boolean timeStatus = data.getTimeStatus();
+ Date createAt = data.getCreateAt();
+ Integer serverSendnum = data.getServerSendnum();
+ Integer userSendnum = data.getUserSendnum();
+ Integer print = data.getPrint();
+ // 新订单信息
+ Order order = new Order();
+ order.setId(id.intValue());
+ order.setCity(city);
+ order.setOrderNumber(orderNo);
+ order.setServeId(serverUid.intValue());
+ // 回收服务信息
+ DataGoods dataGoods = goodsService.getById(productId);
+ order.setServeName(dataGoods.getName());
+ order.setServePrice(new BigDecimal(dataGoods.getPgPrice()));
+// order.setUserId();
+ order.setReservationName(username);
+ order.setReservationPhone(phone);
+ order.setReservationAddress(address + xxAddress);
+ // 时间格式化
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:ss");
+ order.setTime(simpleDateFormat.format(smTime));
+ DataTechnician technician = technicianService.getById(serverUid);
+ order.setServerId(serverUid.intValue());
+ order.setServerName(technician.getUsername());
+ order.setServerPhone(technician.getPhone());
+ order.setReservationRemark(remark);
+ order.setOrderMoney(price.add(btPrice));
+ if (Constants.ONE.equals(status)) {
+ order.setState(Constants.ZERO);
+ } else if (Constants.TWO.equals(status)) {
+ order.setState(Constants.ONE);
+ } else if (Constants.THREE.equals(status)) {
+ order.setState(Constants.TWO);
+ } else if (Constants.FOUR.equals(status)) {
+ order.setState(Constants.THREE);
+ } else if (Constants.FIVE.equals(status)) {
+ order.setState(Constants.FOUR);
+ order.setCancelReason(cancelRemark);
+ }
+ order.setAcceptTime(new Date());
+ if (orderType) {
+ order.setType(Constants.ZERO);
+ } else {
+ order.setType(Constants.ONE);
+ }
+ order.setLongitude(longitude.doubleValue());
+ order.setLatitude(latitude.doubleValue());
+ order.setArriveTime(new Date());
+ order.setCompleteTime(completeTime);
+ order.setIsWithdrawal(Constants.ONE);
+ order.setSubsidy(btPrice);
+ order.setCreateTime(new Date());
+ order.setUpdateTime(new Date());
+ order.setIsDelete(Constants.ZERO);
+ orderList.add(order);
+ // 评价信息
+ if (pjStatus) {
+ Evaluate evaluate = new Evaluate();
+ evaluate.setUserId(uid.intValue());
+ evaluate.setUserPhone(phone);
+ evaluate.setOrderId(order.getId());
+ evaluate.setContent(pjRemark);
+ evaluate.setWorkerId(serverUid.intValue());
+ evaluate.setStarRating(BigDecimal.valueOf(pjLevel));
+ evaluate.setCreateTime(new Date());
+ evaluate.setUpdateTime(new Date());
+ evaluate.setIsDelete(Constants.ZERO);
+ evaluateList.add(evaluate);
+ }
+ // 服务记录信息(回收拍照)
+ if (Constants.FOUR.equals(status)) {
+ ServeRecord serveRecord = new ServeRecord();
+ serveRecord.setOrderId(order.getId());
+ serveRecord.setPhoto(yhqrtp + "," + jjmptp + "," + njtp + "," + wjhqttp);
+ serveRecord.setCreateTime(new Date());
+ serveRecord.setUpdateTime(new Date());
+ serveRecord.setIsDelete(Constants.ZERO);
+ serveRecordList.add(serveRecord);
+ }
+ }
+ if (!orderList.isEmpty()) {
+ orderService.saveOrUpdateBatch(orderList);
+ }
+ if (!evaluateList.isEmpty()) {
+ evaluateService.saveOrUpdateBatch(evaluateList);
+ }
+ if (!serveRecordList.isEmpty()) {
+ serveRecordService.saveOrUpdateBatch(serveRecordList);
+ }
+ }
+ return R.ok();
+ }
+
+ @GetMapping("/user")
+ @ApiOperation(value = "用户数据迁移", tags = {"数据迁移"})
+ public R<List<User>> user() {
+ */
+/*List<DataUser> list = userService.list();
+ List<User> userList = new ArrayList<>();
+ for (DataUser dataUser : list) {
+ Long id = dataUser.getId();
+ String openid = dataUser.getOpenid();
+ String avatar = dataUser.getAvatar();
+ String nickname = dataUser.getNickname();
+ Date createAt = dataUser.getCreateAt();
+ // 新数据封装
+ User user = new User();
+ user.setId(id.intValue());
+ user.setUserNo(String.format(Constants.USER_NO_PRE, RandomUtil.randomNumbers(Constants.EIGHT)));
+ user.setNickname(nickname);
+ user.setProfilePicture(avatar);
+ // todo 用户手机号无法拿到,后续验证码登录也无法登录
+// user.setPhone("");
+ user.setState(Constants.ONE);
+ user.setOpenId(openid);
+ user.setCreateTime(createAt);
+ user.setUpdateTime(createAt);
+ user.setIsDelete(Constants.ZERO);
+ userList.add(user);
+ // 旧收货地址信息
+ List<DataAddress> addressList = addressService.lambdaQuery()
+ .eq(DataAddress::getUid, id).list();
+ if (!addressList.isEmpty()) {
+ List<UserRecipient> recipientList = new ArrayList<>();
+ for (DataAddress dataAddress : addressList) {
+ Long uid = dataAddress.getUid();
+ Boolean type = dataAddress.getType();
+ String username = dataAddress.getUsername();
+ String phone = dataAddress.getPhone();
+ String address = dataAddress.getAddress();
+ BigDecimal latitude = dataAddress.getLatitude();
+ BigDecimal longitude = dataAddress.getLongitude();
+ String xxdz = dataAddress.getXxdz();
+ Date addressCreateAt = dataAddress.getCreateAt();
+ // 新地址
+ UserRecipient userRecipient = new UserRecipient();
+ userRecipient.setUserId(uid.intValue());
+ userRecipient.setRecipient(username);
+ userRecipient.setRecipientPhone(phone);
+ userRecipient.setAddress(address);
+ userRecipient.setAddressDetail(xxdz);
+ if (type) {
+ userRecipient.setIsDefault(Constants.ONE);
+ } else {
+ userRecipient.setIsDefault(Constants.ZERO);
+ }
+ userRecipient.setLongitude(longitude);
+ userRecipient.setLatitude(latitude);
+ userRecipient.setCreateTime(addressCreateAt);
+ userRecipient.setUpdateTime(addressCreateAt);
+ userRecipient.setIsDelete(Constants.ZERO);
+ recipientList.add(userRecipient);
+ }
+ userRecipientService.saveBatch(recipientList);
+ }
+ }
+ newUserService.saveBatch(userList);
+ return R.ok(userList);*//*
+
+ return R.ok();
+ }
+
+ @GetMapping("/worker")
+ @ApiOperation(value = "师傅数据迁移", tags = {"数据迁移"})
+ public R<Object> worker() {
+ */
+/*List<DataTechnician> list = technicianService.list();
+ List<MasterWorker> workerList = new ArrayList<>();
+ List<WorkerProcess> processList = new ArrayList<>();
+ for (DataTechnician data : list) {
+ Long id = data.getId();
+ String city = data.getCity();
+ String username = data.getUsername();
+ String phone = data.getPhone();
+ String carType = data.getCarType();
+ String carNumber = data.getCarNumber();
+ String idcard = data.getIdcard();
+ String idcardZ = data.getIdcardZ();
+ String idcardF = data.getIdcardF();
+ String xsz = data.getXsz();
+ // 新师傅数据封装
+ MasterWorker masterWorker = new MasterWorker();
+ masterWorker.setId(id.intValue());
+ masterWorker.setCity(city);
+ masterWorker.setUserNumber(username);
+ masterWorker.setRealName(username);
+ masterWorker.setIdNumber(idcard);
+ masterWorker.setVehicleType(carType);
+ masterWorker.setVehicleNumber(carNumber);
+ masterWorker.setPhone(phone);
+ // 默认密码
+ BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+ String md5Password = passwordEncoder.encode(Constants.DEFAULT_PASSWORD);
+ masterWorker.setPassword(md5Password);
+ masterWorker.setIdentityPhoto(idcardZ + "," + idcardF);
+ masterWorker.setDrivingLicense(xsz);
+ masterWorker.setIsEnable(Constants.ONE);
+ masterWorker.setCreateTime(new Date());
+ masterWorker.setUpdateTime(new Date());
+ masterWorker.setIsDelete(Constants.ZERO);
+ workerList.add(masterWorker);
+ // 师傅入驻申请信息
+ WorkerProcess workerProcess = new WorkerProcess();
+ workerProcess.setCity(city);
+ workerProcess.setRealName(username);
+ workerProcess.setIdNumber(idcard);
+ workerProcess.setVehicleType(carType);
+ workerProcess.setVehicleNumber(carNumber);
+ workerProcess.setPhone(phone);
+ workerProcess.setIdentityPhoto(idcardZ + "," + idcardF);
+ workerProcess.setDrivingLicense(xsz);
+ workerProcess.setState(Constants.ONE);
+ workerProcess.setCreateTime(new Date());
+ workerProcess.setUpdateTime(new Date());
+ workerProcess.setIsDelete(Constants.ZERO);
+ processList.add(workerProcess);
+ }
+ boolean one = masterWorkerService.saveBatch(workerList);
+ boolean two = workerProcessService.saveBatch(processList);
+ return R.ok(one && two);*//*
+
+ return R.ok();
+ }
+
+ @GetMapping("/serve")
+ @ApiOperation(value = "回收服务数据迁移", tags = {"数据迁移"})
+ public R<Object> serve() {
+ */
+/*List<DataCate> list = cateService.list();
+ Map<Long, DataCate> collect = list.stream().collect(Collectors.toMap(DataCate::getId, data -> data));
+ List<DataGoods> goodList = goodsService.list();
+ List<RecoveryClassify> serveList = new ArrayList<>();
+ for (DataGoods dataGoods : goodList) {
+ DataCate dataCate = collect.get(Long.parseLong(dataGoods.getCateids()));
+ String cover = dataCate.getCover();
+ String remark = dataCate.getRemark();
+ String remarkJj = dataCate.getRemarkJj();
+ Long sort = dataCate.getSort();
+ Integer indexStatus = dataCate.getIndexStatus();
+ // 新分类
+ RecoveryClassify classify = new RecoveryClassify();
+ classify.setId(dataGoods.getId().intValue());
+ String item;
+ if (1L == dataCate.getPid()) {
+ item = "预约上门回收";
+ }else {
+ item = "家电以旧换新";
+ }
+ classify.setSupClassify(item);
+ classify.setSubClassify(dataGoods.getName());
+ classify.setHomePageName(dataCate.getIndexName());
+ classify.setClassificationPicture(cover);
+ classify.setTypeDescribe(remark);
+ classify.setSort(sort.intValue());
+ classify.setBriefIntroduction(remarkJj);
+ classify.setIsRecommend(indexStatus);
+ classify.setCreateTime(new Date());
+ classify.setUpdateTime(new Date());
+ classify.setIsDelete(Constants.ZERO);
+ serveList.add(classify);
+ }
+ return R.ok(classifyService.saveBatch(serveList));*//*
+
+ return R.ok();
+ }
+
+}
+*/
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
index ebbe530..6a2ed6a 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
@@ -1,31 +1,33 @@
package com.ruoyi.admin.controller;
-import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.admin.entity.*;
-import com.ruoyi.admin.request.OrderQueryRequest;
+import com.ruoyi.admin.entity.MasterWorker;
+import com.ruoyi.admin.entity.RecoveryServe;
+import com.ruoyi.admin.entity.Site;
import com.ruoyi.admin.service.*;
import com.ruoyi.admin.sorcket.WebSocketServer;
-import com.ruoyi.admin.vo.OrderCountVO;
import com.ruoyi.admin.vo.OrderDetailVO;
-import com.ruoyi.admin.vo.OrderPageCountVO;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.SnowflakeIdWorker;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.api.entity.*;
+import com.ruoyi.order.api.feignClient.ExchangeDispatchClient;
+import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -46,32 +48,23 @@
@Resource
private MasterWorkerService masterWorkerService;
@Resource
- private SiteService siteService;
- @Resource
private RecoveryServeService recoveryServeService;
@Resource
- private RecoveryServePriceService recoveryServePriceService;
+ private SiteService siteService;
@Resource
- private ChangeDispatchService changeDispatchService;
+ private OrderClient orderClient;
+ @Resource
+ private ExchangeDispatchClient dispatchClient;
+ @Resource
+ private TokenService tokenService;
+ @Resource
+ private FranchiseeService franchiseeService;
/**
* 雪花算法类
*/
private static final SnowflakeIdWorker SNOW_FLAKE_ID_WORKER = new SnowflakeIdWorker(5, 5);
- /**
- * socket测试
- */
- @ApiOperation(value = "socket测试", tags = {"后台-订单管理"})
- @GetMapping(value = "/socketTest")
- public R<String> socketTest(@RequestParam String msg, @RequestParam String id) {
- try {
- WebSocketServer.sendInfo(msg, id);
- return R.ok("消息推送成功!");
- } catch (IOException e) {
- return R.fail();
- }
- }
/**
* 根据前台用户id查询所有订单信息
@@ -84,7 +77,7 @@
@ApiImplicitParam(value = "手机号", name = "phone", dataType = "String", required = true)
})
public R<List<Order>> queryList(@RequestParam("phone") String phone) {
- return R.ok(orderService.lambdaQuery().eq(Order::getReservationPhone, phone).eq(Order::getIsDelete, 0).list());
+ return R.ok(orderClient.queryList(phone).getData());
}
/**
@@ -99,7 +92,8 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "订单id", name = "id", dataType = "Integer", required = true)
})
- public R<OrderDetailVO> detail(@RequestParam String id) {
+ public R<OrderDetailVO> orderDetail(@RequestParam String id) {
+ // 独立orderService
return R.ok(orderService.orderListDetail(id));
}
@@ -110,8 +104,16 @@
*/
@ApiOperation(value = "订单列表-分页", tags = {"后台-订单管理"})
@PostMapping(value = "/queryPage")
- public R<IPage<Order>> queryPage(@RequestBody OrderQueryRequest orderQueryRequest) {
- return R.ok(orderService.queryPage(orderQueryRequest));
+ public R<Page<Order>> queryPage(@RequestBody OrderQueryRequest orderQueryRequest) {
+ LoginUser loginUser = tokenService.getLoginUser();
+ if (null == loginUser) {
+ return R.loginExpire("登录失效!");
+ }
+ List<String> userCity = new ArrayList<>();
+ if (loginUser.getIsFranchisee()) {
+ userCity = loginUser.getCityList();
+ }
+ return R.ok(orderClient.queryPage(orderQueryRequest).getData());
}
/**
@@ -120,21 +122,21 @@
@ApiOperation(value = "订单列表-各订单数量统计", tags = {"后台-订单管理"})
@PostMapping(value = "/orderPageCount")
public R<OrderPageCountVO> orderPageCount(@RequestBody OrderQueryRequest orderQueryRequest) {
- return R.ok(orderService.orderPageCount(orderQueryRequest));
+ return R.ok(orderClient.orderPageCount(orderQueryRequest).getData());
}
/**
* 站点详情
*
- * @param id 站点id
+ * @param id 订单id
*/
@ApiOperation(value = "订单列表-订单详情", tags = {"后台-订单管理"})
@GetMapping(value = "/detail")
@ApiImplicitParams({
- @ApiImplicitParam(value = "站点id", name = "id", dataType = "Integer", required = true)
+ @ApiImplicitParam(value = "订单id", name = "id", dataType = "Integer", required = true)
})
- public R<Order> detail(@RequestParam Integer id) {
- return R.ok(orderService.getById(id));
+ public R<Order> detail(@RequestParam String id) {
+ return R.ok(orderClient.detail(id).getData());
}
/**
@@ -145,42 +147,46 @@
*/
@ApiOperation(value = "订单列表-新增订单", tags = {"后台-订单管理"})
@PostMapping(value = "/save")
- public R<String> save(@RequestBody Order order) {
+ public R<String> save(@RequestBody OrderRequest order) {
// 站点信息
Site site = siteService.lambdaQuery()
.eq(Site::getId, order.getSiteId())
.eq(Site::getIsDelete, 0).one();
order.setSiteName(site.getSiteName());
+ // 师傅信息
+ if (null != order.getServerId()) {
+ MasterWorker masterWorker = masterWorkerService.lambdaQuery()
+ .eq(MasterWorker::getId, order.getServerId())
+ .eq(MasterWorker::getIsDelete, 0).one();
+ order.setServerName(masterWorker.getRealName());
+ order.setServerPhone(masterWorker.getPhone());
+ // 待上门
+ order.setState(Constants.ONE);
+ } else {
+ // 待派单状态
+ order.setState(Constants.ZERO);
+ }
+ // 后台订单
+ order.setType(Constants.ONE);
+ order.setSubsidy(BigDecimal.ZERO);
+ order.setOrderNumber(String.valueOf(SNOW_FLAKE_ID_WORKER.nextId()));
// 回收服务信息
RecoveryServe recoveryServe = recoveryServeService.lambdaQuery()
.eq(RecoveryServe::getId, order.getServeId())
.eq(RecoveryServe::getIsDelete, 0).one();
order.setServeName(recoveryServe.getServeName());
- // 不同城市会有不同的回收价格
- RecoveryServePrice price = recoveryServePriceService.lambdaQuery()
- .eq(RecoveryServePrice::getRecoveryServeId, recoveryServe.getId())
- .eq(RecoveryServePrice::getIsDelete, 0)
- .eq(RecoveryServePrice::getCity, order.getCity()).one();
- if (null == price) {
- order.setServePrice(recoveryServe.getDefaultPrice());
- order.setOrderMoney(recoveryServe.getDefaultPrice());
- } else {
- order.setServePrice(price.getRecoveryPrice());
- order.setOrderMoney(price.getRecoveryPrice());
+ order.setServePrice(recoveryServe.getDefaultPrice());
+ order.setOrderMoney(recoveryServe.getDefaultPrice());
+ Boolean data = orderClient.save(order).getData();
+ if (null == data) {
+ return R.fail(orderClient.save(order).getMsg());
}
- // 师傅信息
- MasterWorker masterWorker = masterWorkerService.lambdaQuery()
- .eq(MasterWorker::getId, order.getServerId())
- .eq(MasterWorker::getIsDelete, 0).one();
- order.setServerName(masterWorker.getRealName());
- order.setServerPhone(masterWorker.getPhone());
- // 后台订单
- order.setType(Constants.ONE);
- // 待派单状态
- order.setState(Constants.ONE);
- order.setSubsidy(BigDecimal.ZERO);
- order.setOrderNumber(String.valueOf(SNOW_FLAKE_ID_WORKER.nextId()));
- return orderService.save(order) ? R.ok() : R.fail();
+ try {
+ WebSocketServer.sendInfo("您有一条新的订单,请注意查收!", String.valueOf(order.getServerId()));
+ } catch (IOException e) {
+ return R.fail("订单推送失败!");
+ }
+ return data ? R.ok() : R.fail();
}
/**
@@ -196,29 +202,20 @@
@ApiImplicitParam(value = "服务人员id", name = "workerId", dataType = "Integer", required = true),
@ApiImplicitParam(value = "改派原因", name = "applyReason", dataType = "String")
})
- public R<String> reassignment(@RequestParam Integer type, @RequestParam Integer orderId,
+ @Transactional(rollbackFor = Exception.class)
+ public R<String> reassignment(@RequestParam Integer type, @RequestParam String orderId,
@RequestParam Integer workerId, String applyReason) {
- Order order = orderService.lambdaQuery().eq(Order::getId, orderId)
- .eq(Order::getIsDelete, 0).one();
MasterWorker masterWorker = masterWorkerService.lambdaQuery()
.eq(MasterWorker::getId, workerId)
.eq(MasterWorker::getIsDelete, 0).one();
+ Order order = orderClient.exchangeOrder(type, orderId, workerId,
+ masterWorker.getRealName(), masterWorker.getPhone()).getData();
// 订单派单
boolean result = true;
- if (Constants.ONE.equals(type)) {
- order.setServerId(workerId);
- order.setServerName(masterWorker.getRealName());
- order.setServerPhone(masterWorker.getPhone());
- order.setAcceptTime(new Date());
- order.setState(Constants.ONE);
- result = orderService.updateById(order);
- } else if (Constants.TWO.equals(type)) {
- order.setServerId(workerId);
- // 更新接单时间
- order.setAcceptTime(new Date());
- order.setServerName(masterWorker.getRealName());
- order.setServerPhone(masterWorker.getPhone());
- result = orderService.updateById(order);
+ if (Constants.TWO.equals(type)) {
+ if (order.getState().equals(Constants.SIX) || order.getState().equals(Constants.THREE)) {
+ orderClient.updateState(order.getId(), Constants.ONE);
+ }
// 生成改派信息
ChangeDispatch changeDispatch = new ChangeDispatch();
changeDispatch.setWorkerId(order.getServerId());
@@ -226,14 +223,14 @@
changeDispatch.setApplyReason(applyReason);
changeDispatch.setApplyTime(new Date());
changeDispatch.setState(Constants.ONE);
- changeDispatch.setOrderId(String.valueOf(order.getId()));
+ changeDispatch.setOrderId(order.getId());
changeDispatch.setOrderNumber(order.getOrderNumber());
if (null != order.getUserId()) {
- changeDispatch.setUserId(String.valueOf(order.getUserId()));
+ changeDispatch.setUserId(order.getUserId());
}
changeDispatch.setUserName(order.getReservationName());
changeDispatch.setIsDelete(Constants.ZERO);
- changeDispatchService.save(changeDispatch);
+ result = dispatchClient.saveRecord(changeDispatch).getData();
}
try {
WebSocketServer.sendInfo("您有一条新的订单,请注意查收!", String.valueOf(workerId));
@@ -253,11 +250,8 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "多个id ',' 拼接", name = "ids", dataType = "String", required = true)
})
- public R<String> batchDelete(@RequestParam String ids) {
- List<String> idList = Arrays.stream(ids.split(",")).collect(Collectors.toList());
- List<Order> list = orderService.lambdaQuery().in(Order::getId, idList).list();
- list.forEach(data -> data.setIsDelete(1));
- return orderService.updateBatchById(list) ? R.ok() : R.fail();
+ public R<Boolean> batchDelete(@RequestParam String ids) {
+ return R.ok(orderClient.batchDelete(ids).getData());
}
/**
@@ -268,7 +262,9 @@
@ApiOperation(value = "订单列表-excel导出", tags = {"后台-订单管理"})
@PostMapping(value = "/excelExport")
public R<String> excelExport(@RequestBody OrderQueryRequest orderQueryRequest, HttpServletResponse response) {
- return orderService.excelExport(orderQueryRequest, response);
+ R<List<Order>> result = orderClient.excelExport(orderQueryRequest);
+ // 独立orderService
+ return orderService.excelExport(result.getData(), response);
}
/**
@@ -285,10 +281,28 @@
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<OrderCountVO>> orderCount(String name, String phone,
- @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
- @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
- return R.ok(orderService.orderCount(name, phone, Page.of(pageNum, pageSize)));
+ public R<Page<OrderCountVO>> orderCount(String name, String phone,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ Page<OrderCountVO> data = orderClient.orderCount(name, phone, pageNum, pageSize).getData();
+ List<Integer> idList = data.getRecords().stream().map(OrderCountVO::getWorkerId)
+ .collect(Collectors.toList());
+ List<MasterWorker> masterWorkerList;
+ if (!idList.isEmpty()) {
+ masterWorkerList = masterWorkerService.lambdaQuery()
+ .in(MasterWorker::getId, idList)
+ .eq(MasterWorker::getIsDelete, 0).list();
+ } else {
+ masterWorkerList = masterWorkerService.lambdaQuery()
+ .eq(MasterWorker::getIsDelete, 0).list();
+ }
+ Map<Integer, String> map = masterWorkerList.stream().collect(Collectors.toMap(MasterWorker::getId,
+ mw -> Optional.ofNullable(mw.getProfilePicture()).orElse("")));
+ for (OrderCountVO record : data.getRecords()) {
+ Integer workerId = record.getWorkerId();
+ record.setProfilePicture(map.get(workerId));
+ }
+ return R.ok(data);
}
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OssController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OssController.java
index a33a054..f5c9caa 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OssController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OssController.java
@@ -1,7 +1,7 @@
package com.ruoyi.admin.controller;
+import com.ruoyi.admin.utils.TencentCosUtil;
import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.utils.ObsUploadUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -12,7 +12,7 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-import java.io.IOException;
+import javax.annotation.Resource;
/**
* @author HJL
@@ -24,17 +24,17 @@
@Api(tags = "公共-文件上传")
public class OssController {
+ @Resource
+ private TencentCosUtil tencentCosUtil;
+
@PostMapping("/upload")
@ApiOperation(value = "文件上传", tags = "公共-文件上传")
@ApiImplicitParams({
@ApiImplicitParam(value = "文件", name = "file", dataType = "MultipartFile", required = true)
})
public R<String> upload(@RequestParam("file") MultipartFile file) {
- try {
- return R.ok(ObsUploadUtil.obsUpload(file), "");
- } catch (IOException e) {
- return R.fail("文件上传失败!");
- }
+ String s = tencentCosUtil.upLoadFile(file);
+ return R.ok(s, s);
}
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/PrizeController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/PrizeController.java
index c943048..79bf5fc 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/PrizeController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/PrizeController.java
@@ -40,7 +40,7 @@
* @param pageNum 页码
* @param pageSize 每页显示条数
*/
- @RequiresPermissions("system_site")
+ @RequiresPermissions("prize")
@ApiOperation(value = "奖品分页查询列表", tags = {"后台-系统设置-奖品管理"})
@GetMapping(value = "/page")
@ApiImplicitParams({
@@ -58,7 +58,7 @@
*
* @param id 奖品id
*/
- @RequiresPermissions("system_site")
+ @RequiresPermissions("prize")
@ApiOperation(value = "奖品详情", tags = {"后台-系统设置-奖品管理"})
@GetMapping(value = "/detail")
@ApiImplicitParams({
@@ -73,7 +73,7 @@
*
* @param prize 奖品信息
*/
- @RequiresPermissions("system_site")
+ @RequiresPermissions("prize")
@ApiOperation(value = "新增奖品", tags = {"后台-系统设置-奖品管理"})
@PostMapping(value = "/save")
public R<String> save(@RequestBody Prize prize) {
@@ -85,7 +85,7 @@
*
* @param prize 奖品信息
*/
- @RequiresPermissions("system_site")
+ @RequiresPermissions("prize")
@ApiOperation(value = "编辑奖品", tags = {"后台-系统设置-奖品管理"})
@PostMapping(value = "/update")
public R<String> update(@RequestBody Prize prize) {
@@ -97,7 +97,7 @@
*
* @param ids 奖品id拼接
*/
- @RequiresPermissions("system_site")
+ @RequiresPermissions("prize")
@ApiOperation(value = "批量删除奖品", tags = {"后台-系统设置-奖品管理"})
@GetMapping(value = "/batchDelete")
@ApiImplicitParams({
@@ -119,4 +119,13 @@
.orderByDesc(Prize::getCreateTime).list());
}
+ /**
+ * 奖品详情 -- 远程调用
+ */
+ @GetMapping(value = "/prizeDetail")
+ public R<Prize> prizeDetail(@RequestParam("id") String id) {
+ return R.ok(prizeService.lambdaQuery().eq(Prize::getIsDelete, 0)
+ .eq(Prize::getId, id).one());
+ }
+
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RecoveryClassifyController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RecoveryClassifyController.java
index 0e91f5b..7dfe7aa 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RecoveryClassifyController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RecoveryClassifyController.java
@@ -6,6 +6,7 @@
import com.ruoyi.admin.entity.RecoveryClassify;
import com.ruoyi.admin.service.RecoveryClassifyService;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -39,6 +40,7 @@
* @param pageNum 页码
* @param pageSize 每页显示条数
*/
+ @RequiresPermissions("serve_recycling_classification")
@ApiOperation(value = "回收分类分页查询列表", tags = {"后台-回收管理-回收分类管理"})
@GetMapping(value = "/page")
@ApiImplicitParams({
@@ -59,6 +61,7 @@
*
* @param id 回收分类id
*/
+ @RequiresPermissions("serve_recycling_classification")
@ApiOperation(value = "回收分类详情", tags = {"后台-回收管理-回收分类管理"})
@GetMapping(value = "/detail")
@ApiImplicitParams({
@@ -71,6 +74,7 @@
/**
* 是否首页推荐
*/
+ @RequiresPermissions("serve_recycling_classification")
@ApiOperation(value = "是否首页推荐", tags = {"后台-回收管理-回收分类管理"})
@GetMapping(value = "/recommend")
@ApiImplicitParams({
@@ -92,6 +96,7 @@
*
* @param recoveryClassify 回收分类信息
*/
+ @RequiresPermissions("serve_recycling_classification")
@ApiOperation(value = "新增回收分类", tags = {"后台-回收管理-回收分类管理"})
@PostMapping(value = "/save")
public R<String> save(@RequestBody RecoveryClassify recoveryClassify) {
@@ -103,6 +108,7 @@
*
* @param recoveryClassify 回收分类信息
*/
+ @RequiresPermissions("serve_recycling_classification")
@ApiOperation(value = "修改回收分类", tags = {"后台-回收管理-回收分类管理"})
@PostMapping(value = "/update")
public R<String> update(@RequestBody RecoveryClassify recoveryClassify) {
@@ -114,6 +120,7 @@
*
* @param ids 回收分类多条id拼接
*/
+ @RequiresPermissions("serve_recycling_classification")
@ApiOperation(value = "批量删除回收分类", tags = {"后台-回收管理-回收分类管理"})
@GetMapping(value = "/batchDelete")
@ApiImplicitParams({
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RecoveryServeController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RecoveryServeController.java
index 6554c0b..6a120af 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RecoveryServeController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RecoveryServeController.java
@@ -12,6 +12,7 @@
import com.ruoyi.admin.service.RecoveryServePriceService;
import com.ruoyi.admin.service.RecoveryServeService;
import com.ruoyi.admin.vo.RecoveryServeResultVO;
+import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.annotation.RequiresPermissions;
@@ -57,18 +58,18 @@
@ApiOperation(value = "回收服务分页查询列表", tags = {"后台-回收管理-回收服务管理"})
@GetMapping(value = "/page")
@ApiImplicitParams({
- @ApiImplicitParam(value = "服务名称", name = "serverName", dataType = "String"),
+ @ApiImplicitParam(value = "服务名称", name = "serveName", dataType = "String"),
@ApiImplicitParam(value = "回收价格起点", name = "startPrice", dataType = "String"),
@ApiImplicitParam(value = "回收价格终点", name = "endPrice", dataType = "String"),
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<RecoveryServe>> queryPageList(String serverName, String startPrice, String endPrice,
+ public R<IPage<RecoveryServe>> queryPageList(String serveName, String startPrice, String endPrice,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
LambdaQueryChainWrapper<RecoveryServe> wrapper = recoveryServeService.lambdaQuery();
// 服务名称模糊匹配
- wrapper = StringUtils.isNotBlank(serverName) ? wrapper.like(RecoveryServe::getServeName, serverName) : wrapper;
+ wrapper = StringUtils.isNotBlank(serveName) ? wrapper.like(RecoveryServe::getServeName, serveName) : wrapper;
// 回收价格区间匹配
wrapper = null != startPrice ? wrapper.ge(RecoveryServe::getDefaultPrice, startPrice) : wrapper;
wrapper = null != endPrice ? wrapper.le(RecoveryServe::getDefaultPrice, endPrice) : wrapper;
@@ -95,7 +96,9 @@
@GetMapping(value = "/typeList")
public R<List<RecoveryClassify>> typeList() {
return R.ok(recoveryClassifyService.lambdaQuery()
- .orderByDesc(RecoveryClassify::getCreateTime).list());
+ .eq(RecoveryClassify::getIsDelete, 0)
+ .orderByDesc(RecoveryClassify::getCreateTime)
+ .list());
}
/**
@@ -157,10 +160,15 @@
serve.setId(recoveryServeRequest.getId());
boolean update = recoveryServeService.updateById(serve);
// 城市及对应回收价
- update = update && recoveryServePriceService.lambdaUpdate()
- .set(RecoveryServePrice::getIsDelete, 1)
+ List<RecoveryServePrice> priceList = recoveryServePriceService.lambdaQuery()
.eq(RecoveryServePrice::getRecoveryServeId, recoveryServeRequest.getId())
- .update();
+ .eq(RecoveryServePrice::getIsDelete, 0).list();
+ if (!priceList.isEmpty()) {
+ for (RecoveryServePrice price : priceList) {
+ price.setIsDelete(Constants.ONE);
+ }
+ update = update && recoveryServePriceService.updateBatchById(priceList);
+ }
// 新增省市及回收价
if (null != recoveryServeRequest.getPriceList()) {
for (RecoveryServePriceRequest data : recoveryServeRequest.getPriceList()) {
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RotateController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RotateController.java
index 73f6c0b..aa90e64 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RotateController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RotateController.java
@@ -61,10 +61,10 @@
/**
* 轮播图列表
*/
- @RequiresPermissions("system_rotate")
@GetMapping(value = "/bannerList")
public R<List<Rotate>> bannerList() {
- return R.ok(rotateService.lambdaQuery().eq(Rotate::getIsDelete, 0)
+ return R.ok(rotateService.lambdaQuery()
+ .eq(Rotate::getIsDelete, 0)
.orderByAsc(Rotate::getSort).list());
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/SendSmsController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/SendSmsController.java
index 1772694..887b88f 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/SendSmsController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/SendSmsController.java
@@ -1,9 +1,13 @@
package com.ruoyi.admin.controller;
-import com.ruoyi.admin.entity.Order;
-import com.ruoyi.admin.service.OrderService;
+import com.ruoyi.admin.entity.MasterWorker;
+import com.ruoyi.admin.entity.WorkerProcess;
+import com.ruoyi.admin.service.MasterWorkerService;
import com.ruoyi.admin.service.SendSmsService;
+import com.ruoyi.admin.service.WorkerProcessService;
+import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.feignClient.OrderClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -28,7 +32,11 @@
@Resource
private SendSmsService sendSmsService;
@Resource
- private OrderService orderService;
+ private OrderClient orderClient;
+ @Resource
+ private MasterWorkerService masterWorkerService;
+ @Resource
+ private WorkerProcessService workerProcessService;
/**
* 发送派单短信给用户
@@ -40,10 +48,8 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "订单记录id", name = "orderId", dataType = "Integer", required = true)
})
- public R<Object> dispatchSms(@RequestParam Integer orderId) {
- Order order = orderService.lambdaQuery()
- .eq(Order::getId, orderId)
- .eq(Order::getIsDelete, 0).one();
+ public R<Object> dispatchSms(@RequestParam String orderId) {
+ com.ruoyi.order.api.entity.Order order = orderClient.detail(orderId).getData();
if (null == order) {
return R.fail("订单不存在或已删除!");
}
@@ -75,6 +81,32 @@
@ApiImplicitParam(value = "手机号", name = "phone", dataType = "String", required = true)
})
public R<String> workerLoginSms(@RequestParam String phone) {
+ MasterWorker masterWorker = masterWorkerService.lambdaQuery()
+ .eq(MasterWorker::getPhone, phone)
+ .eq(MasterWorker::getIsDelete, 0).one();
+ if (null == masterWorker) {
+ return R.fail("当前手机号未注册!");
+ }
+ return R.ok(sendSmsService.workerLoginSms(phone));
+ }
+
+ /**
+ * 师傅端-找回密码/验证手机号/验证码登录
+ *
+ * @param phone 订单记录id
+ */
+ @ApiOperation(value = "师傅端-修改手机号时校验新手机号是否已注册", tags = {"发送短信"})
+ @GetMapping(value = "/checkPhone")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "手机号", name = "phone", dataType = "String", required = true)
+ })
+ public R<String> checkPhone(@RequestParam String phone) {
+ MasterWorker masterWorker = masterWorkerService.lambdaQuery()
+ .eq(MasterWorker::getPhone, phone)
+ .eq(MasterWorker::getIsDelete, 0).one();
+ if (null != masterWorker) {
+ return R.fail("新手机号已注册!");
+ }
return R.ok(sendSmsService.workerLoginSms(phone));
}
@@ -89,6 +121,22 @@
@ApiImplicitParam(value = "手机号", name = "phone", dataType = "String", required = true)
})
public R<String> workerSettleSms(@RequestParam String phone) {
+ // 校验该手机号是否已经生成账号
+ MasterWorker masterWorker = masterWorkerService.lambdaQuery()
+ .eq(MasterWorker::getPhone, phone)
+ .eq(MasterWorker::getIsDelete, 0).one();
+ WorkerProcess workerProcess = workerProcessService.lambdaQuery()
+ .eq(WorkerProcess::getPhone, phone)
+ .eq(WorkerProcess::getIsDelete, 0)
+ .orderByDesc(WorkerProcess::getCreateTime).last("limit 1").one();
+ if (null != workerProcess) {
+ Integer state = workerProcess.getState();
+ if (Constants.ZERO.equals(state)) {
+ return R.fail("该手机号已提交入驻申请,请等待审核!");
+ } else if (Constants.ONE.equals(state) && null != masterWorker) {
+ return R.fail("该手机号入驻申请已通过,请前往登录!");
+ }
+ }
return R.ok(sendSmsService.workerSettleSms(phone));
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ServeCoordinateController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ServeCoordinateController.java
deleted file mode 100644
index b9c622d..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ServeCoordinateController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.admin.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 师傅路线经纬度信息 前端控制器
- * </p>
- *
- * @author hjl
- * @since 2024-06-03
- */
-@RestController
-@RequestMapping("/serve-coordinate")
-public class ServeCoordinateController {
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ServeRecordController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ServeRecordController.java
deleted file mode 100644
index 99a3056..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ServeRecordController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.admin.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 师傅服务记录 前端控制器
- * </p>
- *
- * @author hjl
- * @since 2024-06-03
- */
-@RestController
-@RequestMapping("/serve-record")
-public class ServeRecordController {
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/SysUserController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/SysUserController.java
index 4d1bae7..8fa5bea 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/SysUserController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/SysUserController.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.admin.entity.SysUser;
import com.ruoyi.admin.entity.UserRole;
+import com.ruoyi.admin.request.PasswordRequest;
import com.ruoyi.admin.request.SysUserRequest;
import com.ruoyi.admin.service.SysUserService;
import com.ruoyi.admin.service.UserRoleService;
@@ -58,14 +59,14 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "账号名称", name = "nickName", dataType = "String"),
@ApiImplicitParam(value = "账号", name = "account", dataType = "String"),
- @ApiImplicitParam(value = "所属账号", name = "role", dataType = "String"),
+ @ApiImplicitParam(value = "所属账号", name = "roleId", dataType = "String"),
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<SysUser>> queryPageList(String nickName, String account, String role,
+ public R<IPage<SysUser>> queryPageList(String nickName, String account, String roleId,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
- return R.ok(sysUserService.queryPage(nickName, account, role, Page.of(pageNum, pageSize)));
+ return R.ok(sysUserService.queryPage(nickName, account, roleId, Page.of(pageNum, pageSize)));
}
/**
@@ -113,6 +114,12 @@
if (null == loginUser) {
return R.loginExpire("登录失效!");
}
+ SysUser user = sysUserService.lambdaQuery()
+ .eq(SysUser::getAccount, sysUserRequest.getAccount())
+ .eq(SysUser::getIsDelete, 0).one();
+ if (null != user) {
+ return R.fail("该账号已存在!");
+ }
// 账号封装
SysUser sysUser = new SysUser();
sysUser.setNickName(sysUserRequest.getNickName());
@@ -149,6 +156,12 @@
if (null == loginUser) {
return R.loginExpire("登录失效!");
}
+ SysUser user = sysUserService.lambdaQuery()
+ .eq(SysUser::getAccount, sysUserRequest.getAccount())
+ .eq(SysUser::getIsDelete, 0).one();
+ if (null != user) {
+ return R.fail("该账号已存在!");
+ }
// 修改账号信息
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
LambdaUpdateChainWrapper<SysUser> wrapper = sysUserService.lambdaUpdate();
@@ -164,6 +177,39 @@
}
/**
+ * 修改密码
+ *
+ * @param passwordRequest 账号信息
+ */
+ @ApiOperation(value = "修改密码", tags = {"后台-权限管理-账号管理"})
+ @PostMapping(value = "/updatePassword")
+ public R<String> updatePassword(@RequestBody @Validated PasswordRequest passwordRequest) {
+ String account = passwordRequest.getAccount();
+ String oldPassword = passwordRequest.getOldPassword();
+ String newPassword = passwordRequest.getNewPassword();
+ String confirmPassword = passwordRequest.getConfirmPassword();
+ SysUser user = sysUserService.lambdaQuery()
+ .eq(SysUser::getAccount, account)
+ .eq(SysUser::getIsDelete, 0).one();
+ if (null == user) {
+ return R.fail("账号不存在!");
+ } else {
+ if (!newPassword.equals(confirmPassword)) {
+ return R.fail("新密码与二次确认密码不一致,请重新输入!");
+ }
+ BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+ if (!passwordEncoder.matches(newPassword, oldPassword)) {
+ return R.fail("原密码错误,请重试!");
+ }
+ // 校验通过,加密新的明文密码
+ String encodeNewPassword = passwordEncoder.encode(newPassword);
+ user.setPassword(encodeNewPassword);
+ sysUserService.updateById(user);
+ }
+ return R.ok();
+ }
+
+ /**
* 根据id批量删除账号
*
* @param ids 账号id拼接
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/UserManageController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/UserManageController.java
index 260bd64..6c75ca6 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/UserManageController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/UserManageController.java
@@ -3,14 +3,18 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.admin.entity.*;
-import com.ruoyi.admin.service.*;
-import com.ruoyi.admin.vo.EvaluatePageVO;
-import com.ruoyi.admin.vo.UserWithdrawRecordVO;
-import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.admin.entity.User;
+import com.ruoyi.admin.service.UserService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.GlobalException;
import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.order.api.entity.EvaluatePageVO;
+import com.ruoyi.order.api.entity.Order;
+import com.ruoyi.order.api.entity.UserWithdrawRecordVO;
+import com.ruoyi.order.api.entity.WithdrawalSetting;
+import com.ruoyi.order.api.feignClient.EvaluateClient;
+import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.order.api.feignClient.WithdrawClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -36,15 +40,13 @@
public class UserManageController {
@Resource
- private OrderService orderService;
- @Resource
- private EvaluateService evaluateService;
- @Resource
- private WithdrawService withdrawService;
- @Resource
private UserService userService;
@Resource
- private WithdrawalSettingService withdrawalSettingService;
+ private OrderClient orderClient;
+ @Resource
+ private EvaluateClient evaluateClient;
+ @Resource
+ private WithdrawClient withdrawClient;
/**
* 用户信息分页列表
@@ -116,15 +118,14 @@
@ApiOperation(value = "用户详情-订单记录分页列表", tags = {"后台-用户管理-用户列表"})
@GetMapping(value = "/orderList")
@ApiImplicitParams({
- @ApiImplicitParam(value = "用户id", name = "userId", dataType = "Integer"),
+ @ApiImplicitParam(value = "用户id", name = "userId", dataType = "Integer", required = true),
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<Order>> orderList(Integer userId,
+ public R<IPage<Order>> orderList(@RequestParam("userId") Integer userId,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
- return R.ok(orderService.lambdaQuery().eq(Order::getUserId, userId)
- .eq(Order::getIsDelete, 0).page(Page.of(pageNum, pageSize)));
+ return R.ok(orderClient.orderList(userId, pageNum, pageSize).getData());
}
/**
@@ -142,10 +143,10 @@
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<EvaluatePageVO>> evaluateList(Integer userId,
- @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
- @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
- return R.ok(evaluateService.evaluateList(userId, Page.of(pageNum, pageSize)));
+ public R<Page<EvaluatePageVO>> evaluateList(Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return evaluateClient.evaluateList(userId, pageNum, pageSize);
}
/**
@@ -158,10 +159,8 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "评价记录id", name = "id", dataType = "Integer", required = true)
})
- public R<Void> deleteEvaluateRecord(@RequestParam Integer id) {
- Evaluate evaluate = evaluateService.getById(id);
- evaluate.setIsDelete(1);
- return evaluateService.updateById(evaluate) ? R.ok() : R.fail();
+ public R<String> deleteEvaluateRecord(@RequestParam Integer id) {
+ return evaluateClient.batchDelete(String.valueOf(id));
}
/**
@@ -175,7 +174,7 @@
@ApiImplicitParam(value = "审核状态(0:未开启,1:已开启)", name = "enableProcess", dataType = "Integer", required = true)
})
public R<Boolean> enableProcess(@RequestParam("enableProcess") Integer enableProcess) {
- return R.ok(withdrawService.enableProcess(enableProcess));
+ return withdrawClient.enableProcess(enableProcess);
}
/**
@@ -186,7 +185,7 @@
*/
@GetMapping(value = "/withdrawProcess")
public R<WithdrawalSetting> withdrawProcess() {
- return R.ok(withdrawService.withdrawProcess());
+ return withdrawClient.withdrawProcess();
}
/**
@@ -195,9 +194,7 @@
@ApiOperation(value = "全局审核状态", tags = {"后台-用户管理-用户列表"})
@GetMapping(value = "/withdrawState")
public R<WithdrawalSetting> withdrawState() {
- // 全局审核设置
- WithdrawalSetting setting = withdrawalSettingService.lambdaQuery().one();
- return R.ok(setting);
+ return withdrawClient.withdrawProcess();
}
/**
@@ -215,10 +212,10 @@
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<UserWithdrawRecordVO>> withdrawList(@RequestParam Integer userId,
- @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
- @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
- return R.ok(withdrawService.withdrawList(userId, Page.of(pageNum, pageSize)));
+ public R<Page<UserWithdrawRecordVO>> withdrawList(@RequestParam Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return withdrawClient.withdrawList(userId, pageNum, pageSize);
}
/**
@@ -231,10 +228,8 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "提现记录id", name = "id", dataType = "Integer", required = true)
})
- public R<Void> deleteWithdrawRecord(@RequestParam Integer id) {
- Withdraw withdraw = withdrawService.getById(id);
- withdraw.setIsDelete(1);
- return withdrawService.updateById(withdraw) ? R.ok() : R.fail();
+ public R<String> deleteWithdrawRecord(@RequestParam Integer id) {
+ return withdrawClient.batchDelete(String.valueOf(id));
}
/**
@@ -252,31 +247,22 @@
@ApiImplicitParam(value = "审批同意/不同意(1同意;2驳回)", name = "state", dataType = "Integer", required = true)
})
public R<String> withdrawExamine(@RequestParam Integer id, @RequestParam Integer state, String opinion) {
- Withdraw withdraw = withdrawService.lambdaQuery().eq(Withdraw::getId, id).eq(Withdraw::getIsDelete, 0)
- .eq(Withdraw::getState, 0).one();
+ com.ruoyi.order.api.entity.Withdraw withdraw = withdrawClient.withdrawRecordDetail(id).getData();
if (null == withdraw) {
- return R.fail(503, "当前提现记录审批状态异常!");
+ throw new GlobalException("提现记录不存在或已删除!");
}
- // 修改审批状态及审批意见
- withdraw.setState(state);
- withdraw.setOpinion(opinion);
- // 同意提现申请,更改订单提现状态
- boolean update = true;
- if (Constants.ONE.equals(state)) {
- update = orderService.lambdaUpdate().set(Order::getIsWithdrawal, Constants.ONE)
- .eq(Order::getId, withdraw.getOrderId()).eq(Order::getIsDelete, 0).update();
- // 商家打款至用户微信零钱
- User user = userService.lambdaQuery().eq(User::getId, withdraw.getUserId())
- .eq(User::getIsDelete, 0).one();
- Order order = orderService.lambdaQuery().eq(Order::getId, withdraw.getOrderId())
- .eq(Order::getIsDelete, 0).one();
- if (null == order) {
- throw new GlobalException("订单信息异常!");
- }
- Boolean b = withdrawService.confirmWithdraw(user, order);
+ User user = userService.lambdaQuery()
+ .eq(User::getId, withdraw.getUserId())
+ .eq(User::getIsDelete, 0).one();
+ if (null == user) {
+ throw new GlobalException("提交申请的用户信息不存在!");
}
- update = update && withdrawService.updateById(withdraw);
- return update ? R.ok(null, "审批成功!") : R.fail("审批失败!");
+ Boolean data = withdrawClient.withdrawExamine(id, state, opinion, user.getOpenId(), user.getId()).getData();
+ if (null != data) {
+ return data ? R.ok(null, "审批成功!") : R.fail("审批失败!");
+ } else {
+ return R.fail("审批失败!");
+ }
}
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/WithdrawController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/WithdrawController.java
index ee5a35a..2df6614 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/WithdrawController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/WithdrawController.java
@@ -1,19 +1,16 @@
package com.ruoyi.admin.controller;
-import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.admin.entity.Order;
import com.ruoyi.admin.entity.User;
-import com.ruoyi.admin.entity.Withdraw;
-import com.ruoyi.admin.request.WithdrawExportRequest;
-import com.ruoyi.admin.service.OrderService;
import com.ruoyi.admin.service.UserService;
import com.ruoyi.admin.service.WithdrawService;
-import com.ruoyi.admin.vo.UserWithdrawRecordVO;
-import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.order.api.entity.UserWithdrawRecordVO;
+import com.ruoyi.order.api.entity.Withdraw;
+import com.ruoyi.order.api.entity.WithdrawExportRequest;
+import com.ruoyi.order.api.feignClient.WithdrawClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -22,9 +19,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
import java.util.List;
-import java.util.stream.Collectors;
/**
* <p>
@@ -42,7 +37,7 @@
@Resource
private WithdrawService withdrawService;
@Resource
- private OrderService orderService;
+ private WithdrawClient withdrawClient;
@Resource
private UserService userService;
@@ -63,11 +58,26 @@
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<UserWithdrawRecordVO>> withdrawPage(String nickname, String userPhone,
- String applyForTime, Integer state,
- @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
- @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
- return R.ok(withdrawService.withdrawPage(nickname, userPhone, applyForTime, state, Page.of(pageNum, pageSize)));
+ public R<Page<UserWithdrawRecordVO>> withdrawPage(String nickname, String userPhone,
+ String applyForTime, Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ Page<UserWithdrawRecordVO> page = withdrawClient.withdrawPage(nickname, userPhone, applyForTime,
+ state, pageNum, pageSize).getData();
+ if (null != page) {
+ for (UserWithdrawRecordVO record : page.getRecords()) {
+ Integer userId = record.getUserId();
+ User user = userService.lambdaQuery()
+ .eq(User::getId, userId)
+ .eq(User::getIsDelete, 0).one();
+ if (null != user) {
+ record.setUserNo(user.getUserNo());
+ record.setNickname(user.getNickname());
+ record.setProfilePicture(user.getProfilePicture());
+ }
+ }
+ }
+ return R.ok(page);
}
/**
@@ -81,9 +91,7 @@
@ApiImplicitParam(value = "提现记录id", name = "id", dataType = "Integer", required = true)
})
public R<Withdraw> withdrawRecordDetail(@RequestParam Integer id) {
- Withdraw withdraw = withdrawService.lambdaQuery().eq(Withdraw::getId, id)
- .eq(Withdraw::getIsDelete, 0).one();
- return R.ok(withdraw);
+ return withdrawClient.withdrawRecordDetail(id);
}
/**
@@ -101,31 +109,22 @@
@ApiImplicitParam(value = "审批同意/不同意(1同意;2驳回)", name = "state", dataType = "Integer", required = true)
})
public R<String> withdrawExamine(@RequestParam Integer id, @RequestParam Integer state, String opinion) {
- Withdraw withdraw = withdrawService.lambdaQuery().eq(Withdraw::getId, id).eq(Withdraw::getIsDelete, 0)
- .eq(Withdraw::getState, 0).one();
+ Withdraw withdraw = withdrawClient.withdrawRecordDetail(id).getData();
if (null == withdraw) {
- return R.fail(503, "当前提现记录审批状态异常!");
+ throw new GlobalException("提现记录不存在或已删除!");
}
- // 修改审批状态及审批意见
- withdraw.setState(state);
- withdraw.setOpinion(opinion);
- // 同意提现申请,更改订单提现状态
- boolean update = true;
- if (Constants.ONE.equals(state)) {
- update = orderService.lambdaUpdate().set(Order::getIsWithdrawal, Constants.ONE)
- .eq(Order::getId, withdraw.getOrderId()).eq(Order::getIsDelete, 0).update();
- // 商家打款至用户微信零钱
- User user = userService.lambdaQuery().eq(User::getId, withdraw.getUserId())
- .eq(User::getIsDelete, 0).one();
- Order order = orderService.lambdaQuery().eq(Order::getId, withdraw.getOrderId())
- .eq(Order::getIsDelete, 0).one();
- if (null == order) {
- throw new GlobalException("订单信息异常!");
- }
- Boolean b = withdrawService.confirmWithdraw(user, order);
+ User user = userService.lambdaQuery()
+ .eq(User::getId, withdraw.getUserId())
+ .eq(User::getIsDelete, 0).one();
+ if (null == user) {
+ throw new GlobalException("提交申请的用户信息不存在!");
}
- update = update && withdrawService.updateById(withdraw);
- return update ? R.ok(null, "审批成功!") : R.fail("审批失败!");
+ Boolean data = withdrawClient.withdrawExamine(id, state, opinion, user.getOpenId(), user.getId()).getData();
+ if (null != data) {
+ return data ? R.ok(null, "审批成功!") : R.fail("审批失败!");
+ } else {
+ return R.fail("审批失败!");
+ }
}
/**
@@ -136,7 +135,9 @@
@ApiOperation(value = "用户提现管理-excel导出用户提现记录", tags = {"后台-用户管理-提现列表"})
@PostMapping(value = "/excelExport")
public R<String> excelExport(@RequestBody WithdrawExportRequest exportRequest, HttpServletResponse response) {
- return withdrawService.excelExport(exportRequest, response);
+ List<UserWithdrawRecordVO> data = withdrawClient.excelExport(exportRequest).getData();
+ // 独立service
+ return withdrawService.excelExport(data, response);
}
/**
@@ -151,10 +152,7 @@
@ApiImplicitParam(value = "多个id ',' 拼接", name = "ids", dataType = "String", required = true)
})
public R<String> batchDelete(@RequestParam String ids) {
- List<String> idList = Arrays.stream(ids.split(",")).collect(Collectors.toList());
- List<Withdraw> list = withdrawService.lambdaQuery().in(Withdraw::getId, idList).list();
- list.forEach(data -> data.setIsDelete(1));
- return withdrawService.updateBatchById(list) ? R.ok() : R.fail();
+ return withdrawClient.batchDelete(ids);
}
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/WorkerProcessController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/WorkerProcessController.java
index 37f6af7..c40f934 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/WorkerProcessController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/WorkerProcessController.java
@@ -6,8 +6,10 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.admin.entity.WorkerProcess;
import com.ruoyi.admin.service.WorkerProcessService;
+import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -41,21 +43,23 @@
* @param pageNum 页码
* @param pageSize 每页显示条数
*/
+ @RequiresPermissions("master_worker_process")
@ApiOperation(value = "师傅入驻审核分页查询列表", tags = {"后台-师傅管理-师傅入驻审核管理"})
@GetMapping(value = "/page")
@ApiImplicitParams({
- @ApiImplicitParam(value = "用户ID", name = "userNumber", dataType = "String"),
- @ApiImplicitParam(value = "真实姓名", name = "workerName", dataType = "String"),
+ @ApiImplicitParam(value = "用户ID", name = "id", dataType = "String"),
+ @ApiImplicitParam(value = "真实姓名", name = "realName", dataType = "String"),
@ApiImplicitParam(value = "所属城市", name = "city", dataType = "String"),
@ApiImplicitParam(value = "当前状态(0:待审核 1:已通过 2:已驳回)", name = "state", dataType = "Integer"),
@ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
@ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
})
- public R<IPage<WorkerProcess>> queryPageList(String userNumber, String workerName, String city, Integer state,
+ public R<IPage<WorkerProcess>> queryPageList(String id, String realName, String city, Integer state,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
LambdaQueryChainWrapper<WorkerProcess> wrapper = workerProcessService.lambdaQuery();
- wrapper = StringUtils.isNotBlank(workerName) ? wrapper.like(WorkerProcess::getRealName, workerName) : wrapper;
+ wrapper = StringUtils.isNotBlank(id) ? wrapper.like(WorkerProcess::getId, id) : wrapper;
+ wrapper = StringUtils.isNotBlank(realName) ? wrapper.like(WorkerProcess::getRealName, realName) : wrapper;
wrapper = StringUtils.isNotBlank(city) ? wrapper.like(WorkerProcess::getCity, city) : wrapper;
wrapper = null != state ? wrapper.eq(WorkerProcess::getState, state) : wrapper;
return R.ok(wrapper.eq(WorkerProcess::getIsDelete, 0)
@@ -67,6 +71,7 @@
*
* @param id 师傅入驻审核id
*/
+ @RequiresPermissions("master_worker_process")
@ApiOperation(value = "师傅入驻审核详情", tags = {"后台-师傅管理-师傅入驻审核管理"})
@GetMapping(value = "/detail")
@ApiImplicitParams({
@@ -81,9 +86,11 @@
*
* @param prize 师傅入驻审核信息
*/
+ @RequiresPermissions("master_worker_process")
@ApiOperation(value = "新增师傅入驻审核", tags = {"后台-师傅管理-师傅入驻审核管理"})
@PostMapping(value = "/save")
public R<String> save(@RequestBody WorkerProcess prize) {
+ prize.setState(Constants.ZERO);
return workerProcessService.save(prize) ? R.ok() : R.fail();
}
@@ -92,6 +99,7 @@
*
* @param ids 师傅入驻审核id拼接
*/
+ @RequiresPermissions("master_worker_process")
@ApiOperation(value = "批量删除师傅入驻审核", tags = {"后台-师傅管理-师傅入驻审核管理"})
@GetMapping(value = "/batchDelete")
@ApiImplicitParams({
@@ -109,6 +117,7 @@
*
* @param id 师傅入驻审核id
*/
+ @RequiresPermissions("master_worker_process")
@ApiOperation(value = "师傅入驻审核", tags = {"后台-师傅管理-师傅入驻审核管理"})
@GetMapping(value = "/examine")
@ApiImplicitParams({
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataAddress.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataAddress.java
new file mode 100644
index 0000000..06ec566
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataAddress.java
@@ -0,0 +1,69 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户地址
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_address")
+@ApiModel(value = "DataAddress对象", description = "用户地址")
+public class DataAddress {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("用户UID")
+ @TableField("uid")
+ private Long uid;
+
+ @ApiModelProperty("地址类型(0普通,1默认)")
+ @TableField("type")
+ private Boolean type;
+
+ @ApiModelProperty("收货姓名")
+ @TableField("username")
+ private String username;
+
+ @ApiModelProperty("收货手机")
+ @TableField("phone")
+ private String phone;
+
+ @ApiModelProperty("地址")
+ @TableField("address")
+ private String address;
+
+ @ApiModelProperty("维度")
+ @TableField("latitude")
+ private BigDecimal latitude;
+
+ @ApiModelProperty("经度")
+ @TableField("longitude")
+ private BigDecimal longitude;
+
+ @ApiModelProperty("详细地址")
+ @TableField("xxdz")
+ private String xxdz;
+
+ @ApiModelProperty("创建时间")
+ @TableField("create_at")
+ private Date createAt;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataAdvantage.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataAdvantage.java
new file mode 100644
index 0000000..6fe1957
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataAdvantage.java
@@ -0,0 +1,48 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 服务优势
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_advantage")
+@ApiModel(value = "DataAdvantage对象", description = "服务优势")
+public class DataAdvantage {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("消息名称")
+ @TableField("name")
+ private String name;
+
+ @ApiModelProperty("内容")
+ @TableField("remark")
+ private String remark;
+
+ @ApiModelProperty("排序权重")
+ @TableField("sort")
+ private Long sort;
+
+ @ApiModelProperty("创建时间")
+ @TableField("create_at")
+ private Date createAt;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataCate.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataCate.java
new file mode 100644
index 0000000..1d8712f
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataCate.java
@@ -0,0 +1,68 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 回收分类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_cate")
+@ApiModel(value = "DataCate对象", description = "回收分类")
+public class DataCate {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("上级分类")
+ @TableField("pid")
+ private Long pid;
+
+ @ApiModelProperty("分类名称")
+ @TableField("name")
+ private String name;
+
+ @ApiModelProperty("首页分类名称")
+ @TableField("index_name")
+ private String indexName;
+
+ @ApiModelProperty("分类图标")
+ @TableField("cover")
+ private String cover;
+
+ @ApiModelProperty("分类描述")
+ @TableField("remark")
+ private String remark;
+
+ @ApiModelProperty("分类简介")
+ @TableField("remark_jj")
+ private String remarkJj;
+
+ @ApiModelProperty("排序权重")
+ @TableField("sort")
+ private Long sort;
+
+ @ApiModelProperty("是否首页推荐")
+ @TableField("index_status")
+ private Integer indexStatus;
+
+ @ApiModelProperty("创建时间")
+ @TableField("create_at")
+ private Date createAt;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataCollect.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataCollect.java
new file mode 100644
index 0000000..42987ec
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataCollect.java
@@ -0,0 +1,44 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 收藏
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_collect")
+@ApiModel(value = "DataCollect对象", description = "收藏")
+public class DataCollect {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("用户ID")
+ @TableField("uid")
+ private Long uid;
+
+ @ApiModelProperty("产品ID")
+ @TableField("pid")
+ private Long pid;
+
+ @ApiModelProperty("创建时间")
+ @TableField("create_at")
+ private Date createAt;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataDraw.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataDraw.java
new file mode 100644
index 0000000..3adadd0
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataDraw.java
@@ -0,0 +1,42 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 奖品管理
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_draw")
+@ApiModel(value = "DataDraw对象", description = "奖品管理")
+public class DataDraw {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("奖品名称")
+ @TableField("name")
+ private String name;
+
+ @ApiModelProperty("奖品图片")
+ @TableField("image")
+ private String image;
+
+ @ApiModelProperty("中间几率")
+ @TableField("odds")
+ private String odds;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataGoods.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataGoods.java
new file mode 100644
index 0000000..3d7e20f
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataGoods.java
@@ -0,0 +1,72 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 服务内容
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_goods")
+@ApiModel(value = "DataGoods对象", description = "服务内容")
+public class DataGoods {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("服务名称")
+ @TableField("name")
+ private String name;
+
+ @ApiModelProperty("服务描述")
+ @TableField("remark")
+ private String remark;
+
+ @ApiModelProperty("预估价格")
+ @TableField("price")
+ private String price;
+
+ @ApiModelProperty("评估价格")
+ @TableField("pg_price")
+ private String pgPrice;
+
+ @ApiModelProperty("上级分类")
+ @TableField("pid")
+ private Integer pid;
+
+ @ApiModelProperty("分类编号")
+ @TableField("cateids")
+ private String cateids;
+
+ @ApiModelProperty("服务封面")
+ @TableField("cover")
+ private String cover;
+
+ @ApiModelProperty("轮播图片")
+ @TableField("slider")
+ private String slider;
+
+ @ApiModelProperty("列表排序权重")
+ @TableField("sort")
+ private Long sort;
+
+ @ApiModelProperty("创建时间")
+ @TableField("create_at")
+ private Date createAt;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataMessage.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataMessage.java
new file mode 100644
index 0000000..0f4d140
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataMessage.java
@@ -0,0 +1,48 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 通知
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_message")
+@ApiModel(value = "DataMessage对象", description = "通知")
+public class DataMessage {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("消息名称")
+ @TableField("name")
+ private String name;
+
+ @ApiModelProperty("消息内容")
+ @TableField("content")
+ private String content;
+
+ @ApiModelProperty("排序权重")
+ @TableField("sort")
+ private Long sort;
+
+ @ApiModelProperty("创建时间")
+ @TableField("create_at")
+ private Date createAt;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataOrder.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataOrder.java
new file mode 100644
index 0000000..33b8b54
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataOrder.java
@@ -0,0 +1,178 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 订单
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-01
+ */
+@Getter
+@Setter
+@TableName("data_order")
+@ApiModel(value = "DataOrder对象", description = "订单")
+public class DataOrder {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("0用户订单1指定订单")
+ @TableField("order_type")
+ private Boolean orderType;
+
+ @ApiModelProperty("商品订单单号")
+ @TableField("order_no")
+ private String orderNo;
+
+ @ApiModelProperty("产品ID")
+ @TableField("product_id")
+ private Long productId;
+
+ @ApiModelProperty("用户ID")
+ @TableField("uid")
+ private Long uid;
+
+ @ApiModelProperty("服务用户ID")
+ @TableField("server_uid")
+ private Long serverUid;
+
+ @ApiModelProperty("实际金额")
+ @TableField("price")
+ private BigDecimal price;
+
+ @ApiModelProperty("分享补贴金额")
+ @TableField("bt_price")
+ private BigDecimal btPrice;
+
+ @ApiModelProperty("用户姓名")
+ @TableField("username")
+ private String username;
+
+ @ApiModelProperty("用户手机")
+ @TableField("phone")
+ private String phone;
+
+ @ApiModelProperty("地址-省份")
+ @TableField("province")
+ private String province;
+
+ @ApiModelProperty("地址-城市")
+ @TableField("city")
+ private String city;
+
+ @ApiModelProperty("地址-区域")
+ @TableField("area")
+ private String area;
+
+ @ApiModelProperty("收货地址")
+ @TableField("address")
+ private String address;
+
+ @ApiModelProperty("详细地址")
+ @TableField("xx_address")
+ private String xxAddress;
+
+ @ApiModelProperty("维度")
+ @TableField("latitude")
+ private BigDecimal latitude;
+
+ @ApiModelProperty("经度")
+ @TableField("longitude")
+ private BigDecimal longitude;
+
+ @ApiModelProperty("上门时间")
+ @TableField("sm_time")
+ private Date smTime;
+
+ @ApiModelProperty("服务备注")
+ @TableField("remark")
+ private String remark;
+
+ @ApiModelProperty("取消订单描述")
+ @TableField("cancel_remark")
+ private String cancelRemark;
+
+ @ApiModelProperty("评价等级")
+ @TableField("pj_level")
+ private Integer pjLevel;
+
+ @ApiModelProperty("评价描述")
+ @TableField("pj_remark")
+ private String pjRemark;
+
+ @ApiModelProperty("修改时间原因")
+ @TableField("reason")
+ private String reason;
+
+ @ApiModelProperty("完工时间")
+ @TableField("completeTime")
+ private Date completeTime;
+
+ @ApiModelProperty("用户确认图片")
+ @TableField("yhqrtp")
+ private String yhqrtp;
+
+ @ApiModelProperty("旧机铭牌图片")
+ @TableField("jjmptp")
+ private String jjmptp;
+
+ @ApiModelProperty("内机图片")
+ @TableField("njtp")
+ private String njtp;
+
+ @ApiModelProperty("外机和其他图片")
+ @TableField("wjhqttp")
+ private String wjhqttp;
+
+ @ApiModelProperty("抽奖次数")
+ @TableField("drawnum")
+ private Integer drawnum;
+
+ @ApiModelProperty("订单流程状态(1待派单,2已派单,3已接单,4已完成,5已取消)")
+ @TableField("status")
+ private Integer status;
+
+ @ApiModelProperty("订单流程状态(0未接单1确定接单2取消接单)")
+ @TableField("jd_status")
+ private Boolean jdStatus;
+
+ @ApiModelProperty("再投师傅ID")
+ @TableField("zt_server_uid")
+ private String ztServerUid;
+
+ @ApiModelProperty("评价状态0未评价1已评价")
+ @TableField("pj_status")
+ private Boolean pjStatus;
+
+ @ApiModelProperty("时间状态")
+ @TableField("time_status")
+ private Boolean timeStatus;
+
+ @ApiModelProperty("订单创建时间")
+ @TableField("create_at")
+ private Date createAt;
+
+ @TableField("server_sendnum")
+ private Integer serverSendnum;
+
+ @TableField("user_sendnum")
+ private Integer userSendnum;
+
+ @TableField("print")
+ private Integer print;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataQuestion.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataQuestion.java
new file mode 100644
index 0000000..30e69fa
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataQuestion.java
@@ -0,0 +1,48 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 常见问题
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_question")
+@ApiModel(value = "DataQuestion对象", description = "常见问题")
+public class DataQuestion {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("消息名称")
+ @TableField("name")
+ private String name;
+
+ @ApiModelProperty("内容")
+ @TableField("remark")
+ private String remark;
+
+ @ApiModelProperty("排序权重")
+ @TableField("sort")
+ private Long sort;
+
+ @ApiModelProperty("创建时间")
+ @TableField("create_at")
+ private Date createAt;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataTechnician.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataTechnician.java
new file mode 100644
index 0000000..b8e31df
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataTechnician.java
@@ -0,0 +1,84 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 技师
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_technician")
+@ApiModel(value = "DataTechnician对象", description = "技师")
+public class DataTechnician {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("用户ID")
+ @TableField("uid")
+ private String uid;
+
+ @ApiModelProperty("城市")
+ @TableField("city")
+ private String city;
+
+ @ApiModelProperty("用户姓名")
+ @TableField("username")
+ private String username;
+
+ @ApiModelProperty("用户手机")
+ @TableField("phone")
+ private String phone;
+
+ @ApiModelProperty("车辆类型")
+ @TableField("car_type")
+ private String carType;
+
+ @ApiModelProperty("车牌号码")
+ @TableField("car_number")
+ private String carNumber;
+
+ @ApiModelProperty("身份证号码")
+ @TableField("idcard")
+ private String idcard;
+
+ @ApiModelProperty("身份证正面")
+ @TableField("idcard_z")
+ private String idcardZ;
+
+ @ApiModelProperty("身份证反面")
+ @TableField("idcard_f")
+ private String idcardF;
+
+ @ApiModelProperty("行驶证")
+ @TableField("xsz")
+ private String xsz;
+
+ @ApiModelProperty("工作状态(1正常,0休息)")
+ @TableField("work_status")
+ private Boolean workStatus;
+
+ @ApiModelProperty("用户状态(0审核中,1同意,2驳回)")
+ @TableField("status")
+ private Boolean status;
+
+ @ApiModelProperty("注册时间")
+ @TableField("create_at")
+ private Date createAt;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataTransfer.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataTransfer.java
new file mode 100644
index 0000000..b6d00d4
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataTransfer.java
@@ -0,0 +1,65 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 提现
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_transfer")
+@ApiModel(value = "DataTransfer对象", description = "提现")
+public class DataTransfer {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("用户UID")
+ @TableField("uid")
+ private Long uid;
+
+ @ApiModelProperty("提现单号")
+ @TableField("code")
+ private String code;
+
+ @ApiModelProperty("提现手续费金额")
+ @TableField("charge_amount")
+ private BigDecimal chargeAmount;
+
+ @ApiModelProperty("提现转账金额")
+ @TableField("amount")
+ private BigDecimal amount;
+
+ @ApiModelProperty("交易单号")
+ @TableField("trade_no")
+ private String tradeNo;
+
+ @ApiModelProperty("打款时间")
+ @TableField("trade_time")
+ private String tradeTime;
+
+ @ApiModelProperty("提现状态(0待审核,1同意,2驳回,3打款中,4已打款,5已收款)")
+ @TableField("status")
+ private Boolean status;
+
+ @ApiModelProperty("创建时间")
+ @TableField("create_at")
+ private Date createAt;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataUser.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataUser.java
new file mode 100644
index 0000000..26e8b4d
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/DataUser.java
@@ -0,0 +1,61 @@
+package com.ruoyi.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Getter
+@Setter
+@TableName("data_user")
+@ApiModel(value = "DataUser对象", description = "用户")
+public class DataUser {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("小程序OPENID")
+ @TableField("openid")
+ private String openid;
+
+ @ApiModelProperty("用户头像")
+ @TableField("avatar")
+ private String avatar;
+
+ @ApiModelProperty("用户昵称")
+ @TableField("nickname")
+ private String nickname;
+
+ @ApiModelProperty("用户金额")
+ @TableField("price")
+ private BigDecimal price;
+
+ @ApiModelProperty("是否技师(1是0否)")
+ @TableField("status")
+ private Boolean status;
+
+ @ApiModelProperty("是否提交审核(1是0否)")
+ @TableField("sh_status")
+ private Boolean shStatus;
+
+ @ApiModelProperty("注册时间")
+ @TableField("create_at")
+ private Date createAt;
+
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/Evaluate.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/Evaluate.java
deleted file mode 100644
index 0487b1c..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/Evaluate.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.ruoyi.admin.entity;
-
-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.ruoyi.common.core.domain.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-
-/**
- * <p>
- * 用户评价表
- * </p>
- *
- * @author hjl
- * @since 2024-05-29
- */
-@Getter
-@Setter
-@TableName("t_evaluate")
-@ApiModel(value = "Evaluate对象", description = "用户评价表")
-public class Evaluate extends BaseEntity {
-
- @TableId(value = "id",type = IdType.AUTO)
- private Integer id;
-
- @ApiModelProperty("用户id")
- @TableField("user_id")
- private Integer userId;
-
- @ApiModelProperty("用户手机号")
- @TableField("user_phone")
- private String userPhone;
-
- @ApiModelProperty("订单id")
- @TableField("order_id")
- private Integer orderId;
-
- @ApiModelProperty("评价内容")
- @TableField("content")
- private String content;
-
- @ApiModelProperty("评价师傅id")
- @TableField("worker_id")
- private Integer workerId;
-
- @ApiModelProperty("评价星级")
- @TableField("star_rating")
- private BigDecimal starRating;
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/RecoveryServe.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/RecoveryServe.java
index 7377188..ba7cdf7 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/RecoveryServe.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/RecoveryServe.java
@@ -43,7 +43,7 @@
@ApiModelProperty("预估价格")
@TableField("estimate_price")
- private BigDecimal estimatePrice;
+ private String estimatePrice;
@ApiModelProperty("默认回收价")
@TableField("default_price")
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/ServeCoordinate.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/ServeCoordinate.java
index 94e7521..698ebda 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/ServeCoordinate.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/ServeCoordinate.java
@@ -1,16 +1,9 @@
package com.ruoyi.admin.entity;
-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.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
-
-import java.math.BigDecimal;
/**
* <p>
@@ -18,35 +11,26 @@
* </p>
*
* @author hjl
- * @since 2024-06-03
+ * @since 2024-07-08
*/
@Getter
@Setter
-@TableName("sys_serve_coordinate")
@ApiModel(value = "ServeCoordinate对象", description = "师傅路线经纬度信息")
-public class ServeCoordinate extends BaseEntity {
-
- @TableId(value = "id",type = IdType.AUTO)
- private Integer id;
+public class ServeCoordinate {
@ApiModelProperty("师傅id")
- @TableField("worker_id")
private Integer workerId;
@ApiModelProperty("订单id")
- @TableField("order_id")
- private Integer orderId;
+ private String orderId;
@ApiModelProperty("路线经纬度")
- @TableField("coordinate")
private String coordinate;
@ApiModelProperty("经度")
- @TableField("longitude")
- private BigDecimal longitude;
+ private Double longitude;
@ApiModelProperty("纬度")
- @TableField("latitude")
- private BigDecimal latitude;
+ private Double latitude;
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/ServeRecord.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/ServeRecord.java
deleted file mode 100644
index cc086b6..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/ServeRecord.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.ruoyi.admin.entity;
-
-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.ruoyi.common.core.domain.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * <p>
- * 师傅服务记录
- * </p>
- *
- * @author hjl
- * @since 2024-06-03
- */
-@Getter
-@Setter
-@TableName("sys_serve_record")
-@ApiModel(value = "ServeRecord对象", description = "师傅服务记录")
-public class ServeRecord extends BaseEntity {
-
- @TableId(value = "id",type = IdType.AUTO)
- private Integer id;
-
- @ApiModelProperty("订单id")
- @TableField("order_id")
- private Integer orderId;
-
- @ApiModelProperty("现场照片(多张照片 , 隔开)")
- @TableField("photo")
- private String photo;
-
- @ApiModelProperty("服务备注")
- @TableField("remark")
- private String remark;
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/SysUser.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/SysUser.java
index e846aaf..1efcafa 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/SysUser.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/SysUser.java
@@ -86,4 +86,8 @@
@TableField(exist = false)
private Integer roleId;
+ @ApiModelProperty("所属加盟商id")
+ @TableField("franchisee_id")
+ private Integer franchiseeId;
+
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/Withdraw.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/Withdraw.java
index 186cb6e..afed644 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/Withdraw.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/Withdraw.java
@@ -60,7 +60,7 @@
@ApiModelProperty("订单id")
@TableField("order_id")
- private Integer orderId;
+ private String orderId;
/**
* 申请状态中文(导出用) 0待审核;1已通过;2已驳回
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/WorkerProcess.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/WorkerProcess.java
index 1ff9f66..49289be 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/WorkerProcess.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/WorkerProcess.java
@@ -81,4 +81,8 @@
@TableField("opinion")
private String opinion;
+ @ApiModelProperty("管辖城市二维数组")
+ @TableField("city_str")
+ private String cityStr;
+
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataAddressMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataAddressMapper.java
new file mode 100644
index 0000000..b9a1031
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataAddressMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataAddress;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 用户地址 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataAddressMapper extends BaseMapper<DataAddress> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataAdvantageMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataAdvantageMapper.java
new file mode 100644
index 0000000..add7a08
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataAdvantageMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataAdvantage;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 服务优势 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataAdvantageMapper extends BaseMapper<DataAdvantage> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataCateMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataCateMapper.java
new file mode 100644
index 0000000..9c4b0ff
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataCateMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataCate;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 回收分类 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataCateMapper extends BaseMapper<DataCate> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataCollectMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataCollectMapper.java
new file mode 100644
index 0000000..deae6f5
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataCollectMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataCollect;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 收藏 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataCollectMapper extends BaseMapper<DataCollect> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataDrawMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataDrawMapper.java
new file mode 100644
index 0000000..1d851f9
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataDrawMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataDraw;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 奖品管理 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataDrawMapper extends BaseMapper<DataDraw> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataGoodsMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataGoodsMapper.java
new file mode 100644
index 0000000..a669549
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataGoodsMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataGoods;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 服务内容 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataGoodsMapper extends BaseMapper<DataGoods> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataMessageMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataMessageMapper.java
new file mode 100644
index 0000000..cf9dbea
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataMessageMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataMessage;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 通知 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataMessageMapper extends BaseMapper<DataMessage> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataOrderMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataOrderMapper.java
new file mode 100644
index 0000000..05177e4
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataOrderMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataOrder;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 订单 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-01
+ */
+@Mapper
+public interface DataOrderMapper extends BaseMapper<DataOrder> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataQuestionMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataQuestionMapper.java
new file mode 100644
index 0000000..2794097
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataQuestionMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataQuestion;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 常见问题 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataQuestionMapper extends BaseMapper<DataQuestion> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataTechnicianMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataTechnicianMapper.java
new file mode 100644
index 0000000..45c6892
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataTechnicianMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataTechnician;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 技师 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataTechnicianMapper extends BaseMapper<DataTechnician> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataTransferMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataTransferMapper.java
new file mode 100644
index 0000000..24c0ae1
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataTransferMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataTransfer;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 提现 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataTransferMapper extends BaseMapper<DataTransfer> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataUserMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataUserMapper.java
new file mode 100644
index 0000000..f54a1ed
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/DataUserMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.admin.entity.DataUser;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 用户 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Mapper
+public interface DataUserMapper extends BaseMapper<DataUser> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/EvaluateMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/EvaluateMapper.java
deleted file mode 100644
index 090068c..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/EvaluateMapper.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.ruoyi.admin.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.admin.entity.Evaluate;
-import com.ruoyi.admin.vo.EvaluatePageVO;
-import org.apache.ibatis.annotations.Param;
-
-/**
- * <p>
- * 用户评价表 Mapper 接口
- * </p>
- *
- * @author hjl
- * @since 2024-05-29
- */
-public interface EvaluateMapper extends BaseMapper<Evaluate> {
-
- /**
- * 订单评价分页列表
- *
- * @param userName 评价用户
- * @param orderNumber 订单编号
- * @param workerName 师傅姓名
- * @param page 分页
- * @return 分页
- */
- IPage<EvaluatePageVO> queryPageList(@Param("userName") String userName, @Param("orderNumber") String orderNumber, @Param("workerName") String workerName, Page<Object> page);
-
- /**
- * 用户所关联评价记录分页列表
- *
- * @param userId 用户id
- * @param page 分页
- * @return 分页列表
- */
- IPage<EvaluatePageVO> evaluateList(@Param("userId") Integer userId, Page<EvaluatePageVO> page);
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/MasterWorkerMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/MasterWorkerMapper.java
index 01c2c0c..a7d3db3 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/MasterWorkerMapper.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/MasterWorkerMapper.java
@@ -2,10 +2,6 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.admin.entity.MasterWorker;
-import com.ruoyi.admin.vo.MasterWorkerRankVO;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
/**
* <p>
@@ -17,11 +13,4 @@
*/
public interface MasterWorkerMapper extends BaseMapper<MasterWorker> {
- /**
- * 师傅接单排行
- *
- * @param workerIdList 师傅id集合
- * @return 排行信息
- */
- List<MasterWorkerRankVO> workerRanking(@Param("ids") List<Integer> workerIdList);
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/OrderMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/OrderMapper.java
index a95d9f9..1f4cbee 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/OrderMapper.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/OrderMapper.java
@@ -1,16 +1,7 @@
package com.ruoyi.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.admin.entity.Order;
-import com.ruoyi.admin.request.OrderQueryRequest;
-import com.ruoyi.admin.vo.OrderCountVO;
-import com.ruoyi.admin.vo.OrderQueryVO;
-import org.apache.ibatis.annotations.Param;
-
-import java.math.BigDecimal;
-import java.util.List;
/**
* <p>
@@ -22,121 +13,120 @@
*/
public interface OrderMapper extends BaseMapper<Order> {
- /**
- * 查询本年订单数量
- *
- * @param cityList 城市集合
- * @param orderState 订单状态
- * @param startTime 开始日期
- * @param endTime 结束日期
- * @return 本年订单数量
- */
- List<OrderQueryVO> orderCountByYear(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
- @Param("startTime") String startTime, @Param("endTime") String endTime);
-
- /**
- * 查询本月订单数量
- *
- * @param cityList 城市集合
- * @param orderState 订单状态
- * @param startTime 开始日期
- * @param endTime 结束日期
- * @return 本年订单数量
- */
- List<OrderQueryVO> orderCountByMonth(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
- @Param("startTime") String startTime, @Param("endTime") String endTime);
-
- /**
- * 查询本周订单数量
- *
- * @param cityList 城市集合
- * @param orderState 订单状态
- * @param startTime 开始日期
- * @param endTime 结束日期
- * @return 本年订单数量
- */
- List<OrderQueryVO> orderCountByWeek(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
- @Param("startTime") String startTime, @Param("endTime") String endTime);
-
- /**
- * 查询当天订单数量
- *
- * @param cityList 城市集合
- * @param orderState 订单状态
- * @param startTime 开始日期
- * @param endTime 结束日期
- * @return 本年订单数量
- */
- List<OrderQueryVO> orderCountByToday(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
- @Param("startTime") String startTime, @Param("endTime") String endTime);
-
- /**
- * 查询整个季度的交易额(订单状态为:已完工)
- *
- * @param startDateStr 季度开始时间
- * @param endDateStr 季度结束时间
- * @param cityList 城市集合
- * @return 总交易额
- */
- BigDecimal totalMoneyByQuarter(@Param("start") String startDateStr, @Param("end") String endDateStr,
- @Param("cityList") List<String> cityList);
-
- /**
- * 查询整个年度的交易额(订单状态为:已完工)
- *
- * @param cityList 城市集合
- * @return 总交易额
- */
- BigDecimal totalMoneyByYear(@Param("cityList") List<String> cityList);
-
- /**
- * 查询整个月度的交易额(订单状态为:已完工)
- *
- * @param cityList 城市列表
- * @return 总交易额
- */
- BigDecimal totalMoneyByMonth(@Param("cityList") List<String> cityList);
-
- /**
- * 订单管理-订单统计
- *
- * @param name 师傅姓名
- * @param phone 师傅电话
- * @param page 分页
- * @return 分页统计
- */
- IPage<OrderCountVO> orderCount(@Param("name") String name, @Param("phone") String phone, Page<OrderCountVO> page);
-
- /**
- * 订单列表
- *
- * @param orderQueryRequest 订单列表查询参数
- * @param page 分页
- * @return 分页
- */
- IPage<Order> queryPage(@Param("data") OrderQueryRequest orderQueryRequest, Page<Order> page);
-
- /**
- * 订单管理分页模块,订单数量统计
- *
- * @param orderQueryRequest 筛选参数
- * @return 统计数量
- */
- List<Order> orderPageCount(@Param("data") OrderQueryRequest orderQueryRequest);
-
- /**
- * 根据所选id查询
- *
- * @param ids id集合
- * @return 返回列表
- */
- List<Order> exportByIdList(List<String> ids);
-
- /**
- * 根据筛选条件查询
- *
- * @param orderQueryRequest 筛选条件
- * @return 返回列表
- */
- List<Order> exportList(@Param("data") OrderQueryRequest orderQueryRequest);
+// /**
+// * 查询本年订单数量
+// *
+// * @param cityList 城市集合
+// * @param orderState 订单状态
+// * @param startTime 开始日期
+// * @param endTime 结束日期
+// * @return 本年订单数量
+// List<OrderQueryVO> orderCountByYear(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
+// @Param("startTime") String startTime, @Param("endTime") String endTime);
+//
+// *
+// * 查询本月订单数量
+// *
+// * @param cityList 城市集合
+// * @param orderState 订单状态
+// * @param startTime 开始日期
+// * @param endTime 结束日期
+// * @return 本年订单数量
+//
+// List<OrderQueryVO> orderCountByMonth(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
+// @Param("startTime") String startTime, @Param("endTime") String endTime);
+//
+// *
+// * 查询本周订单数量
+// *
+// * @param cityList 城市集合
+// * @param orderState 订单状态
+// * @param startTime 开始日期
+// * @param endTime 结束日期
+// * @return 本年订单数量
+//
+// List<OrderQueryVO> orderCountByWeek(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
+// @Param("startTime") String startTime, @Param("endTime") String endTime);
+//
+// *
+// * 查询当天订单数量
+// *
+// * @param cityList 城市集合
+// * @param orderState 订单状态
+// * @param startTime 开始日期
+// * @param endTime 结束日期
+// * @return 本年订单数量
+//
+// List<OrderQueryVO> orderCountByToday(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
+// @Param("startTime") String startTime, @Param("endTime") String endTime);
+//
+// *
+// * 查询整个季度的交易额(订单状态为:已完工)
+// *
+// * @param startDateStr 季度开始时间
+// * @param endDateStr 季度结束时间
+// * @param cityList 城市集合
+// * @return 总交易额
+//
+// BigDecimal totalMoneyByQuarter(@Param("start") String startDateStr, @Param("end") String endDateStr,
+// @Param("cityList") List<String> cityList);
+//
+// *
+// * 查询整个年度的交易额(订单状态为:已完工)
+// *
+// * @param cityList 城市集合
+// * @return 总交易额
+//
+// BigDecimal totalMoneyByYear(@Param("cityList") List<String> cityList);
+//
+// *
+// * 查询整个月度的交易额(订单状态为:已完工)
+// *
+// * @param cityList 城市列表
+// * @return 总交易额
+//
+// BigDecimal totalMoneyByMonth(@Param("cityList") List<String> cityList);
+//
+// *
+// * 订单管理-订单统计
+// *
+// * @param name 师傅姓名
+// * @param phone 师傅电话
+// * @param page 分页
+// * @return 分页统计
+//
+// IPage<OrderCountVO> orderCount(@Param("name") String name, @Param("phone") String phone, Page<OrderCountVO> page);
+//
+// *
+// * 订单列表
+// *
+// * @param orderQueryRequest 订单列表查询参数
+// * @param page 分页
+// * @return 分页
+//
+// IPage<Order> queryPage(@Param("data") OrderQueryRequest orderQueryRequest, Page<Order> page);
+//
+// *
+// * 订单管理分页模块,订单数量统计
+// *
+// * @param orderQueryRequest 筛选参数
+// * @return 统计数量
+//
+// List<Order> orderPageCount(@Param("data") OrderQueryRequest orderQueryRequest);
+//
+// *
+// * 根据所选id查询
+// *
+// * @param ids id集合
+// * @return 返回列表
+//
+// List<Order> exportByIdList(List<String> ids);
+//
+// *
+// * 根据筛选条件查询
+// *
+// * @param orderQueryRequest 筛选条件
+// * @return 返回列表
+//
+// List<Order> exportList(@Param("data") OrderQueryRequest orderQueryRequest);*/
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/ServeCoordinateMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/ServeCoordinateMapper.java
deleted file mode 100644
index 4c0d1b4..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/ServeCoordinateMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.ruoyi.admin.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.admin.entity.ServeCoordinate;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * <p>
- * 师傅路线经纬度信息 Mapper 接口
- * </p>
- *
- * @author hjl
- * @since 2024-06-03
- */
-@Mapper
-public interface ServeCoordinateMapper extends BaseMapper<ServeCoordinate> {
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/ServeRecordMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/ServeRecordMapper.java
deleted file mode 100644
index 2a67071..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/ServeRecordMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.ruoyi.admin.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.admin.entity.ServeRecord;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * <p>
- * 师傅服务记录 Mapper 接口
- * </p>
- *
- * @author hjl
- * @since 2024-06-03
- */
-@Mapper
-public interface ServeRecordMapper extends BaseMapper<ServeRecord> {
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/WithdrawMapper.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/WithdrawMapper.java
deleted file mode 100644
index 238fa2e..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/mapper/WithdrawMapper.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.ruoyi.admin.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.admin.entity.Withdraw;
-import com.ruoyi.admin.vo.UserWithdrawRecordVO;
-import org.apache.ibatis.annotations.Param;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-/**
- * <p>
- * 用户提现记录表 Mapper 接口
- * </p>
- *
- * @author hjl
- * @since 2024-05-29
- */
-public interface WithdrawMapper extends BaseMapper<Withdraw> {
-
- /**
- * 获取用户提现金额
- *
- * @param cityList 城市集合
- * @param startDateStr 季度开始时间
- * @param endDateStr 季度结束时间
- * @return 总金额
- */
- BigDecimal withdrawalTotalMoney(@Param("cityList") List<String> cityList, @Param("start") String startDateStr, @Param("end") String endDateStr);
-
- /**
- * 年度查询
- *
- * @param cityList 城市列表
- * @return 年度提现总额
- */
- BigDecimal withdrawalTotalMoneyByYear(@Param("cityList") List<String> cityList);
-
- /**
- * 月度查询
- *
- * @param cityList 城市列表
- * @return 年度提现总额
- */
- BigDecimal withdrawalTotalMoneyByMonth(@Param("cityList") List<String> cityList);
-
- /**
- * 用户所关联提现记录分页列表
- *
- * @param userId 用户id
- * @param page 分页参数
- * @return 分页列表
- */
- IPage<UserWithdrawRecordVO> withdrawList(@Param("userId") Integer userId, Page<UserWithdrawRecordVO> page);
-
- /**
- * 用户所关联提现记录分页列表
- *
- * @param nickname 用户名称
- * @param userPhone 用户手机号
- * @param applyForTime 申请时间
- * @param state 审核状态
- * @param page 分页
- * @return 分页列表
- */
- IPage<UserWithdrawRecordVO> withdrawPage(@Param("name") String nickname, @Param("phone") String userPhone,
- @Param("time") String applyForTime,
- @Param("state") Integer state, Page<UserWithdrawRecordVO> page);
-
- /**
- * 提现记录列表
- *
- * @param nickname 用户名称
- * @param userPhone 用户手机号
- * @param applyForTime 申请时间
- * @param state 审核状态
- * @return 分页列表
- */
- List<UserWithdrawRecordVO> exportList(@Param("name") String nickname, @Param("phone") String userPhone,
- @Param("time") String applyForTime,
- @Param("state") Integer state);
-
- /**
- * 根据所选id导出
- *
- * @param ids 提现记录ids
- * @return 列表
- */
- List<UserWithdrawRecordVO> exportByIdList(List<String> ids);
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/OrderQueryRequest.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/OrderQueryRequest.java
index c29b0fc..0686171 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/OrderQueryRequest.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/OrderQueryRequest.java
@@ -60,5 +60,4 @@
@ApiModelProperty("导出ids集合")
private List<String> ids;
-
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/PasswordRequest.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/PasswordRequest.java
new file mode 100644
index 0000000..376761e
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/PasswordRequest.java
@@ -0,0 +1,38 @@
+package com.ruoyi.admin.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 用户信息表
+ *
+ * @author hjl
+ * @since 2024-06-25
+ */
+@Getter
+@Setter
+@ApiModel(value = "后台修改密码对象", description = "后台修改密码对象")
+public class PasswordRequest {
+
+ @ApiModelProperty("账号")
+ @NotBlank(message = "账号不能为空!")
+ private String account;
+
+ @ApiModelProperty("原密码")
+ @NotBlank(message = "原密码不能为空!")
+ private String oldPassword;
+
+ @ApiModelProperty("新密码")
+ @NotBlank(message = "新密码不能为空!")
+ private String newPassword;
+
+ @ApiModelProperty("二次确认密码")
+ @NotNull(message = "二次确认密码不能为空!")
+ private String confirmPassword;
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/RecoveryServeRequest.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/RecoveryServeRequest.java
index 4ee7035..76f33c2 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/RecoveryServeRequest.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/request/RecoveryServeRequest.java
@@ -35,7 +35,7 @@
private String serveDescribe;
@ApiModelProperty("预估价格")
- private BigDecimal estimatePrice;
+ private String estimatePrice;
@ApiModelProperty("默认回收价")
private BigDecimal defaultPrice;
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataAddressService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataAddressService.java
new file mode 100644
index 0000000..4564f48
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataAddressService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataAddress;
+
+/**
+ * <p>
+ * 用户地址 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataAddressService extends IService<DataAddress> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataAdvantageService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataAdvantageService.java
new file mode 100644
index 0000000..b36efe7
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataAdvantageService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataAdvantage;
+
+/**
+ * <p>
+ * 服务优势 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataAdvantageService extends IService<DataAdvantage> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataCateService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataCateService.java
new file mode 100644
index 0000000..8598785
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataCateService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataCate;
+
+/**
+ * <p>
+ * 回收分类 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataCateService extends IService<DataCate> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataCollectService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataCollectService.java
new file mode 100644
index 0000000..d2ed301
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataCollectService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataCollect;
+
+/**
+ * <p>
+ * 收藏 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataCollectService extends IService<DataCollect> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataDrawService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataDrawService.java
new file mode 100644
index 0000000..58ebac7
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataDrawService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataDraw;
+
+/**
+ * <p>
+ * 奖品管理 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataDrawService extends IService<DataDraw> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataGoodsService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataGoodsService.java
new file mode 100644
index 0000000..99e7db5
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataGoodsService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataGoods;
+
+/**
+ * <p>
+ * 服务内容 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataGoodsService extends IService<DataGoods> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataMessageService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataMessageService.java
new file mode 100644
index 0000000..e9303cb
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataMessageService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataMessage;
+
+/**
+ * <p>
+ * 通知 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataMessageService extends IService<DataMessage> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataOrderService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataOrderService.java
new file mode 100644
index 0000000..064985b
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataOrderService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataOrder;
+
+/**
+ * <p>
+ * 订单 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-01
+ */
+public interface DataOrderService extends IService<DataOrder> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataQuestionService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataQuestionService.java
new file mode 100644
index 0000000..448516d
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataQuestionService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataQuestion;
+
+/**
+ * <p>
+ * 常见问题 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataQuestionService extends IService<DataQuestion> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataTechnicianService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataTechnicianService.java
new file mode 100644
index 0000000..baefcbe
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataTechnicianService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataTechnician;
+
+/**
+ * <p>
+ * 技师 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataTechnicianService extends IService<DataTechnician> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataTransferService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataTransferService.java
new file mode 100644
index 0000000..1ecd869
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataTransferService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataTransfer;
+
+/**
+ * <p>
+ * 提现 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataTransferService extends IService<DataTransfer> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataUserService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataUserService.java
new file mode 100644
index 0000000..e704063
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/DataUserService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.admin.entity.DataUser;
+
+/**
+ * <p>
+ * 用户 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+public interface DataUserService extends IService<DataUser> {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/EvaluateService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/EvaluateService.java
deleted file mode 100644
index fbe5850..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/EvaluateService.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.ruoyi.admin.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.admin.entity.Evaluate;
-import com.ruoyi.admin.vo.EvaluatePageVO;
-
-/**
- * <p>
- * 用户评价表 服务类
- * </p>
- *
- * @author hjl
- * @since 2024-05-29
- */
-public interface EvaluateService extends IService<Evaluate> {
-
- /**
- * 订单评价分页列表
- *
- * @param userName 评价用户
- * @param orderNumber 订单编号
- * @param workerName 师傅姓名
- * @param page 分页
- * @return 分页
- */
- IPage<EvaluatePageVO> queryPageList(String userName, String orderNumber, String workerName, Page<Object> page);
-
- /**
- * 用户所关联评价记录分页列表
- *
- * @param userId 用户id
- * @param page 分页
- * @return 分页列表
- */
- IPage<EvaluatePageVO> evaluateList(Integer userId, Page<EvaluatePageVO> page);
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/MasterWorkerService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/MasterWorkerService.java
index 4925c9c..1bb4e62 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/MasterWorkerService.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/MasterWorkerService.java
@@ -28,7 +28,8 @@
* 校验师傅手机号是否唯一
*
* @param phone 注册手机号
+ * @param id 师傅id
* @return 是否唯一
*/
- boolean checkOnlyPhone(String phone);
+ boolean checkOnlyPhone(String phone, Integer id);
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/OrderService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/OrderService.java
index d3ce92f..ce42946 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/OrderService.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/OrderService.java
@@ -1,19 +1,11 @@
package com.ruoyi.admin.service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.admin.entity.Order;
-import com.ruoyi.admin.request.OrderCountRequest;
-import com.ruoyi.admin.request.OrderQueryRequest;
-import com.ruoyi.admin.vo.OrderCountVO;
import com.ruoyi.admin.vo.OrderDetailVO;
-import com.ruoyi.admin.vo.OrderPageCountVO;
-import com.ruoyi.admin.vo.OrderResultVO;
import com.ruoyi.common.core.domain.R;
import javax.servlet.http.HttpServletResponse;
-import java.math.BigDecimal;
import java.util.List;
/**
@@ -27,55 +19,13 @@
public interface OrderService extends IService<Order> {
/**
- * 回收订单统计
- *
- * @param orderCount 查询所需参数
- * @return 柱状图数据
- */
- OrderResultVO orderCountHome(OrderCountRequest orderCount);
-
- /**
- * 查询整个季度的交易额(订单状态为:已完工)
- *
- * @param startDateStr 季度开始时间
- * @param endDateStr 季度结束时间
- * @param cityList 城市列表
- * @return 总交易额
- */
- BigDecimal totalMoneyByQuarter(String startDateStr, String endDateStr, List<String> cityList);
-
- /**
- * 查询整个年度的交易额(订单状态为:已完工)
- *
- * @param cityList 城市列表
- * @return 总交易额
- */
- BigDecimal totalMoneyByYear(List<String> cityList);
-
- /**
- * 查询整个月度的交易额(订单状态为:已完工)
- *
- * @param cityList 城市列表
- * @return 总交易额
- */
- BigDecimal totalMoneyByMonth(List<String> cityList);
-
- /**
* excel模板导出
*
- * @param orderQueryRequest 筛选参数
- * @param response 响应体
+ * @param orderList 订单列表
+ * @param response 响应体
* @return 导出结果
*/
- R<String> excelExport(OrderQueryRequest orderQueryRequest, HttpServletResponse response);
-
- /**
- * 订单列表
- *
- * @param orderQueryRequest 订单列表查询参数
- * @return 分页
- */
- IPage<Order> queryPage(OrderQueryRequest orderQueryRequest);
+ R<String> excelExport(List<com.ruoyi.order.api.entity.Order> orderList, HttpServletResponse response);
/**
* 订单列表-查询订单详情(包含服务信息、师傅信息、服务记录、订单评价)
@@ -85,21 +35,4 @@
*/
OrderDetailVO orderListDetail(String id);
- /**
- * 订单管理-订单统计
- *
- * @param name 师傅姓名
- * @param phone 师傅电话
- * @param page 分页
- * @return 分页统计
- */
- IPage<OrderCountVO> orderCount(String name, String phone, Page<OrderCountVO> page);
-
- /**
- * 订单管理分页模块,订单数量统计
- *
- * @param orderQueryRequest 筛选参数
- * @return 统计数量
- */
- OrderPageCountVO orderPageCount(OrderQueryRequest orderQueryRequest);
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/SendSmsService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/SendSmsService.java
index 1cd1f05..7af3eb4 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/SendSmsService.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/SendSmsService.java
@@ -1,6 +1,6 @@
package com.ruoyi.admin.service;
-import com.ruoyi.admin.entity.Order;
+import com.ruoyi.order.api.entity.Order;
/**
* @author HJL
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/ServeCoordinateService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/ServeCoordinateService.java
deleted file mode 100644
index 2961a4c..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/ServeCoordinateService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.admin.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.admin.entity.ServeCoordinate;
-
-/**
- * <p>
- * 师傅路线经纬度信息 服务类
- * </p>
- *
- * @author hjl
- * @since 2024-06-03
- */
-public interface ServeCoordinateService extends IService<ServeCoordinate> {
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/ServeRecordService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/ServeRecordService.java
deleted file mode 100644
index bf2a93e..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/ServeRecordService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.admin.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.admin.entity.ServeRecord;
-
-/**
- * <p>
- * 师傅服务记录 服务类
- * </p>
- *
- * @author hjl
- * @since 2024-06-03
- */
-public interface ServeRecordService extends IService<ServeRecord> {
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/WithdrawService.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/WithdrawService.java
index 06e1380..19a73fe 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/WithdrawService.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/WithdrawService.java
@@ -1,18 +1,8 @@
package com.ruoyi.admin.service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.admin.entity.Order;
-import com.ruoyi.admin.entity.User;
-import com.ruoyi.admin.entity.Withdraw;
-import com.ruoyi.admin.entity.WithdrawalSetting;
-import com.ruoyi.admin.request.WithdrawExportRequest;
-import com.ruoyi.admin.vo.UserWithdrawRecordVO;
import com.ruoyi.common.core.domain.R;
import javax.servlet.http.HttpServletResponse;
-import java.math.BigDecimal;
import java.util.List;
/**
@@ -23,86 +13,15 @@
* @author hjl
* @since 2024-05-29
*/
-public interface WithdrawService extends IService<Withdraw> {
+public interface WithdrawService {
/**
* excel模板导出
*
- * @param exportRequest 提现记录
- * @param response 响应体
+ * @param data 提现记录
+ * @param response 响应体
* @return 导出结果
*/
- R<String> excelExport(WithdrawExportRequest exportRequest, HttpServletResponse response);
+ R<String> excelExport(List<com.ruoyi.order.api.entity.UserWithdrawRecordVO> data, HttpServletResponse response);
- /**
- * 获取用户提现金额
- *
- * @param cityList 城市集合
- * @param startDateStr 季度开始时间
- * @param endDateStr 季度结束时间
- * @return 总金额
- */
- BigDecimal withdrawalTotalMoney(List<String> cityList, String startDateStr, String endDateStr);
-
- /**
- * 年度查询
- *
- * @param cityList 城市集合
- * @return 年度提现总额
- */
- BigDecimal withdrawalTotalMoneyByYear(List<String> cityList);
-
- /**
- * 月度查询
- *
- * @param cityList 城市列表
- * @return 年度提现总额
- */
- BigDecimal withdrawalTotalMoneyByMonth(List<String> cityList);
-
- /**
- * 用户所关联提现记录分页列表
- *
- * @param userId 用户id
- * @param page 分页参数
- * @return 分页列表
- */
- IPage<UserWithdrawRecordVO> withdrawList(Integer userId, Page<UserWithdrawRecordVO> page);
-
- /**
- * 关闭/开启审核
- *
- * @param enableProcess 关闭/开启审核
- * @return 操作结果
- */
- Boolean enableProcess(Integer enableProcess);
-
- /**
- * 获取全局审核设置
- *
- * @return 审核设置
- */
- WithdrawalSetting withdrawProcess();
-
- /**
- * 用户所关联提现记录分页列表
- *
- * @param nickname 用户名称
- * @param userPhone 用户手机号
- * @param applyForTime 申请开始时间
- * @param state 审核状态
- * @param page 分页
- * @return 分页列表
- */
- IPage<UserWithdrawRecordVO> withdrawPage(String nickname, String userPhone, String applyForTime,
- Integer state, Page<UserWithdrawRecordVO> page);
-
- /**
- * 提现审批通过,微信打款
- *
- * @param user 下单用户
- * @param order 订单信息
- * @return 打款结果
- */
- Boolean confirmWithdraw(User user, Order order);
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataAddressServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataAddressServiceImpl.java
new file mode 100644
index 0000000..d77667c
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataAddressServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataAddress;
+import com.ruoyi.admin.mapper.DataAddressMapper;
+import com.ruoyi.admin.service.DataAddressService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户地址 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataAddressServiceImpl extends ServiceImpl<DataAddressMapper, DataAddress> implements DataAddressService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataAdvantageServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataAdvantageServiceImpl.java
new file mode 100644
index 0000000..66e7211
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataAdvantageServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataAdvantage;
+import com.ruoyi.admin.mapper.DataAdvantageMapper;
+import com.ruoyi.admin.service.DataAdvantageService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 服务优势 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataAdvantageServiceImpl extends ServiceImpl<DataAdvantageMapper, DataAdvantage> implements DataAdvantageService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataCateServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataCateServiceImpl.java
new file mode 100644
index 0000000..1bbcc9a
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataCateServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataCate;
+import com.ruoyi.admin.mapper.DataCateMapper;
+import com.ruoyi.admin.service.DataCateService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 回收分类 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataCateServiceImpl extends ServiceImpl<DataCateMapper, DataCate> implements DataCateService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataCollectServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataCollectServiceImpl.java
new file mode 100644
index 0000000..1b1aeb7
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataCollectServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataCollect;
+import com.ruoyi.admin.mapper.DataCollectMapper;
+import com.ruoyi.admin.service.DataCollectService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 收藏 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataCollectServiceImpl extends ServiceImpl<DataCollectMapper, DataCollect> implements DataCollectService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataDrawServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataDrawServiceImpl.java
new file mode 100644
index 0000000..0be2510
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataDrawServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataDraw;
+import com.ruoyi.admin.mapper.DataDrawMapper;
+import com.ruoyi.admin.service.DataDrawService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 奖品管理 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataDrawServiceImpl extends ServiceImpl<DataDrawMapper, DataDraw> implements DataDrawService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataGoodsServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataGoodsServiceImpl.java
new file mode 100644
index 0000000..8c49d93
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataGoodsServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataGoods;
+import com.ruoyi.admin.mapper.DataGoodsMapper;
+import com.ruoyi.admin.service.DataGoodsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 服务内容 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataGoodsServiceImpl extends ServiceImpl<DataGoodsMapper, DataGoods> implements DataGoodsService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataMessageServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataMessageServiceImpl.java
new file mode 100644
index 0000000..5bf8f38
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataMessageServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataMessage;
+import com.ruoyi.admin.mapper.DataMessageMapper;
+import com.ruoyi.admin.service.DataMessageService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 通知 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataMessageServiceImpl extends ServiceImpl<DataMessageMapper, DataMessage> implements DataMessageService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataOrderServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataOrderServiceImpl.java
new file mode 100644
index 0000000..f581538
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataOrderServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataOrder;
+import com.ruoyi.admin.mapper.DataOrderMapper;
+import com.ruoyi.admin.service.DataOrderService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 订单 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-01
+ */
+@Service
+public class DataOrderServiceImpl extends ServiceImpl<DataOrderMapper, DataOrder> implements DataOrderService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataQuestionServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataQuestionServiceImpl.java
new file mode 100644
index 0000000..e77e1a2
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataQuestionServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataQuestion;
+import com.ruoyi.admin.mapper.DataQuestionMapper;
+import com.ruoyi.admin.service.DataQuestionService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 常见问题 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataQuestionServiceImpl extends ServiceImpl<DataQuestionMapper, DataQuestion> implements DataQuestionService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataTechnicianServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataTechnicianServiceImpl.java
new file mode 100644
index 0000000..9e809d4
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataTechnicianServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataTechnician;
+import com.ruoyi.admin.mapper.DataTechnicianMapper;
+import com.ruoyi.admin.service.DataTechnicianService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 技师 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataTechnicianServiceImpl extends ServiceImpl<DataTechnicianMapper, DataTechnician> implements DataTechnicianService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataTransferServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataTransferServiceImpl.java
new file mode 100644
index 0000000..60f3e4f
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataTransferServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataTransfer;
+import com.ruoyi.admin.mapper.DataTransferMapper;
+import com.ruoyi.admin.service.DataTransferService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 提现 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, DataTransfer> implements DataTransferService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataUserServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataUserServiceImpl.java
new file mode 100644
index 0000000..cbb5075
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/DataUserServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.admin.entity.DataUser;
+import com.ruoyi.admin.mapper.DataUserMapper;
+import com.ruoyi.admin.service.DataUserService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-02
+ */
+@Service
+public class DataUserServiceImpl extends ServiceImpl<DataUserMapper, DataUser> implements DataUserService {
+
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/EvaluateServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/EvaluateServiceImpl.java
deleted file mode 100644
index a124f89..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/EvaluateServiceImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.ruoyi.admin.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.admin.entity.Evaluate;
-import com.ruoyi.admin.mapper.EvaluateMapper;
-import com.ruoyi.admin.service.EvaluateService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.admin.vo.EvaluatePageVO;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 用户评价表 服务实现类
- * </p>
- *
- * @author hjl
- * @since 2024-05-29
- */
-@Service
-public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> implements EvaluateService {
-
- @Override
- public IPage<EvaluatePageVO> queryPageList(String userName, String orderNumber, String workerName, Page<Object> page) {
- return baseMapper.queryPageList(userName, orderNumber, workerName, page);
- }
-
- @Override
- public IPage<EvaluatePageVO> evaluateList(Integer userId, Page<EvaluatePageVO> page) {
- return baseMapper.evaluateList(userId, page);
- }
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MasterWorkerServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MasterWorkerServiceImpl.java
index 6d6bf62..516dacf 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MasterWorkerServiceImpl.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MasterWorkerServiceImpl.java
@@ -1,14 +1,17 @@
package com.ruoyi.admin.service.impl;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.admin.entity.MasterWorker;
import com.ruoyi.admin.mapper.MasterWorkerMapper;
import com.ruoyi.admin.service.MasterWorkerService;
import com.ruoyi.admin.vo.MasterWorkerRankVO;
+import com.ruoyi.order.api.entity.WorkerOrderRankVO;
+import com.ruoyi.order.api.feignClient.OrderClient;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.List;
+import javax.annotation.Resource;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -22,25 +25,58 @@
@Service
public class MasterWorkerServiceImpl extends ServiceImpl<MasterWorkerMapper, MasterWorker> implements MasterWorkerService {
+ @Resource
+ private OrderClient orderClient;
+
@Override
public List<MasterWorkerRankVO> workerRanking(List<String> cityList) {
List<MasterWorker> masterWorkerList;
if (null == cityList || cityList.isEmpty()) {
masterWorkerList = lambdaQuery().eq(MasterWorker::getIsDelete, 0).list();
} else {
- masterWorkerList = lambdaQuery().in(MasterWorker::getCity, cityList).eq(MasterWorker::getIsDelete, 0).list();
+ masterWorkerList = lambdaQuery().in(MasterWorker::getCity, cityList)
+ .eq(MasterWorker::getIsDelete, 0).list();
}
if (null == masterWorkerList || masterWorkerList.isEmpty()) {
return new ArrayList<>();
}
- List<Integer> workerIdList = masterWorkerList.stream().map(MasterWorker::getId).collect(Collectors.toList());
- List<MasterWorkerRankVO> result = baseMapper.workerRanking(workerIdList);
- return null == result ? new ArrayList<>() : result;
+ // 师傅id查询
+ List<Integer> workerIds = masterWorkerList.stream().map(MasterWorker::getId).collect(Collectors.toList());
+ List<WorkerOrderRankVO> data = orderClient.workerOrderRank(workerIds).getData();
+ Map<Integer, Integer> map = data.stream().collect(Collectors.toMap(WorkerOrderRankVO::getWorkerId,
+ WorkerOrderRankVO::getOrderNumber));
+ // 结果数据封装
+ List<MasterWorkerRankVO> result = new ArrayList<>();
+ for (MasterWorker masterWorker : masterWorkerList) {
+ Integer id = masterWorker.getId();
+ Integer orderNumber = map.get(id);
+ if (null != orderNumber) {
+ // 展示数据
+ MasterWorkerRankVO masterWorkerRankVO = new MasterWorkerRankVO();
+ masterWorkerRankVO.setProfilePicture(masterWorker.getProfilePicture());
+ masterWorkerRankVO.setRealName(masterWorker.getRealName());
+ masterWorkerRankVO.setOrderNumber(orderNumber);
+ result.add(masterWorkerRankVO);
+ }
+ }
+ // 创建一个 Comparator
+ Comparator<MasterWorkerRankVO> comparator = Comparator
+ // 按照 orderNumber 字段排序
+ .comparingInt(MasterWorkerRankVO::getOrderNumber)
+ // 倒序
+ .reversed();
+ // 使用 Collections.sort 方法进行排序
+ result.sort(comparator);
+ return result;
}
@Override
- public boolean checkOnlyPhone(String phone) {
- MasterWorker masterWorker = lambdaQuery().eq(MasterWorker::getPhone, phone).one();
+ public boolean checkOnlyPhone(String phone, Integer id) {
+ LambdaQueryChainWrapper<MasterWorker> wrapper = lambdaQuery().eq(MasterWorker::getPhone, phone);
+ if (null != id) {
+ wrapper.ne(MasterWorker::getId, id);
+ }
+ MasterWorker masterWorker = wrapper.one();
return masterWorker == null;
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/OrderServiceImpl.java
index f65ae18..dd6d01c 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/OrderServiceImpl.java
@@ -4,30 +4,36 @@
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.admin.entity.*;
import com.ruoyi.admin.mapper.OrderMapper;
import com.ruoyi.admin.mapper.UserMapper;
-import com.ruoyi.admin.request.OrderCountRequest;
-import com.ruoyi.admin.request.OrderQueryRequest;
-import com.ruoyi.admin.service.*;
+import com.ruoyi.admin.service.MasterWorkerService;
+import com.ruoyi.admin.service.OrderService;
+import com.ruoyi.admin.service.RecoveryClassifyService;
+import com.ruoyi.admin.service.RecoveryServeService;
import com.ruoyi.admin.vo.*;
import com.ruoyi.common.core.constant.Constants;
-import com.ruoyi.common.core.constant.OrderConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.order.api.entity.ServeRecord;
+import com.ruoyi.order.api.feignClient.EvaluateClient;
+import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.order.api.feignClient.ServeRecordClient;
import org.apache.commons.codec.CharEncoding;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -53,64 +59,20 @@
@Resource
private MasterWorkerService masterWorkerService;
@Resource
- private ServeRecordService serveRecordService;
+ private OrderClient orderClient;
@Resource
- private ServeCoordinateService serveCoordinateService;
+ private EvaluateClient evaluateClient;
@Resource
- private EvaluateService evaluateService;
- @Resource
- private ChangeDispatchService changeDispatchService;
+ private ServeRecordClient serveRecordClient;
+
+ /**
+ * linux服务器保存订单轨迹文件夹
+ */
+ private static final String BASE_PATH = "/usr/local/coordinate/";
+// private static final String BASE_PATH = "D:/Desktop/coordinate/";
@Override
- public OrderResultVO orderCountHome(OrderCountRequest orderCount) {
- List<String> cityList = orderCount.getCityList();
- Integer orderState = orderCount.getOrderState();
- String countType = orderCount.getCountType();
- String startTime = orderCount.getStartTime();
- String endTime = orderCount.getEndTime();
- List<OrderQueryVO> list;
- // 根据查询类型查询订单信息
- if (OrderConstants.YEAR.equals(countType)) {
- list = baseMapper.orderCountByYear(cityList, orderState, startTime, endTime);
- } else if (OrderConstants.MONTH.equals(countType)) {
- list = baseMapper.orderCountByMonth(cityList, orderState, startTime, endTime);
- } else if (OrderConstants.WEEK.equals(countType)) {
- list = baseMapper.orderCountByWeek(cityList, orderState, startTime, endTime);
- } else if (OrderConstants.TODAY.equals(countType)) {
- list = baseMapper.orderCountByToday(cityList, orderState, startTime, endTime);
- } else {
- list = new ArrayList<>();
- }
- // 计算订单总额及总订单数量
- BigDecimal totalMoney;
- int orderNumber;
- if (list.isEmpty()) {
- totalMoney = BigDecimal.ZERO;
- orderNumber = 0;
- } else {
- totalMoney = list.stream().map(OrderQueryVO::getTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
- orderNumber = list.stream().map(OrderQueryVO::getNumber).collect(Collectors.toList()).stream().mapToInt(Integer::intValue).sum();
- }
- return new OrderResultVO(totalMoney, orderNumber, list);
- }
-
- @Override
- public BigDecimal totalMoneyByQuarter(String startDateStr, String endDateStr, List<String> cityList) {
- return baseMapper.totalMoneyByQuarter(startDateStr, endDateStr, cityList);
- }
-
- @Override
- public BigDecimal totalMoneyByYear(List<String> cityList) {
- return baseMapper.totalMoneyByYear(cityList);
- }
-
- @Override
- public BigDecimal totalMoneyByMonth(List<String> cityList) {
- return baseMapper.totalMoneyByMonth(cityList);
- }
-
- @Override
- public R<String> excelExport(OrderQueryRequest orderQueryRequest, HttpServletResponse response) {
+ public R<String> excelExport(List<com.ruoyi.order.api.entity.Order> list, HttpServletResponse response) {
try {
response.setCharacterEncoding(Constants.UTF8);
response.setContentType("application/vnd.ms-excel");
@@ -121,13 +83,6 @@
return R.fail("excel导出失败!");
}
try {
- List<String> ids = orderQueryRequest.getIds();
- List<Order> list;
- if (null != ids && !ids.isEmpty()) {
- list = baseMapper.exportByIdList(ids);
- } else {
- list = baseMapper.exportList(orderQueryRequest);
- }
// excel模板封装
ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream());
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" + Constants.EXCEL_ORDER_FILE_NAME + ".xlsx");
@@ -146,27 +101,9 @@
}
@Override
- public IPage<Order> queryPage(OrderQueryRequest orderQueryRequest) {
- Page<Order> page = Page.of(orderQueryRequest.getPageNum(), orderQueryRequest.getPageSize());
- // 基础查询
- IPage<Order> pageList = baseMapper.queryPage(orderQueryRequest, page);
- for (Order order : pageList.getRecords()) {
- ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery()
- .eq(ChangeDispatch::getOrderId, order.getId())
- .eq(ChangeDispatch::getIsDelete, 0)
- .orderByDesc(ChangeDispatch::getCreateTime)
- .last("limit 1").one();
- if (null != changeDispatch) {
- order.setApplyReason(changeDispatch.getApplyReason());
- }
- }
- return pageList;
- }
-
- @Override
public OrderDetailVO orderListDetail(String id) {
OrderDetailVO result = new OrderDetailVO();
- Order order = this.getById(id);
+ com.ruoyi.order.api.entity.Order order = orderClient.detail(id).getData();
orderInfo(result, order);
// 预约人信息
userInfo(result, order);
@@ -181,51 +118,70 @@
return result;
}
- private void evaluateInfo(OrderDetailVO result, Order order) {
- Evaluate evaluate = evaluateService.lambdaQuery().eq(Evaluate::getOrderId, order.getId())
- .eq(Evaluate::getIsDelete, 0).one();
+ private void evaluateInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
+ com.ruoyi.order.api.entity.Evaluate evaluate = evaluateClient.oneByOrderId(order.getId()).getData();
OrderByEvaluateVO orderByEvaluate = new OrderByEvaluateVO();
if (null != evaluate) {
- orderByEvaluate.setStarRating(evaluate.getStarRating());
+ orderByEvaluate.setStarRating(BigDecimal.valueOf(evaluate.getStarRating()));
orderByEvaluate.setEvaluateTime(evaluate.getCreateTime());
orderByEvaluate.setEvaluateContent(evaluate.getContent());
}
result.setEvaluateInfo(orderByEvaluate);
}
- private void serveRecordInfo(OrderDetailVO result, Order order) {
- ServeRecord serveRecord = serveRecordService.lambdaQuery().eq(ServeRecord::getOrderId, order.getId())
- .eq(ServeRecord::getIsDelete, 0).one();
- // 师傅路线轨迹
- List<ServeCoordinate> serveCoordinateList = serveCoordinateService.lambdaQuery()
- .eq(ServeCoordinate::getWorkerId, order.getServerId())
- .eq(ServeCoordinate::getIsDelete, 0)
- .eq(ServeCoordinate::getOrderId, order.getId())
- .orderByDesc(ServeCoordinate::getCreateTime).list();
+ private void serveRecordInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
OrderByServeRecordVO orderByServeRecord = new OrderByServeRecordVO();
orderByServeRecord.setAcceptOrderTime(order.getAcceptTime());
orderByServeRecord.setReachTime(order.getTime());
- orderByServeRecord.setCoordinate(serveCoordinateList.stream().map(ServeCoordinate::getCoordinate).collect(Collectors.toList()));
+ // 服务记录 包含现场照片
+ ServeRecord serveRecord = serveRecordClient.serveRecordByOrderId(order.getId()).getData();
+ // 师傅路线轨迹
+ String masterFolderPath = BASE_PATH + order.getServerId();
+ File masterFolder = new File(masterFolderPath);
+ // 检查师傅ID的文件夹是否存在,存在就读取轨迹数据
+ System.out.println("文件是否存在:" + masterFolder.exists());
+ if (masterFolder.exists()) {
+ // 检查订单ID的JSON文件是否存在,不存在则创建
+ String jsonFilePath = masterFolderPath + "/" + order.getId() + ".json";
+ File jsonFile = new File(jsonFilePath);
+ System.out.println("订单Json文件是否存在:" + jsonFile.exists());
+ if (jsonFile.exists()) {
+ try {
+ String jsonContent = new String(Files.readAllBytes(Paths.get(jsonFilePath)));
+ System.out.println("JSON 文件内容:" + jsonContent);
+ List<JSONObject> coordinate = JSONObject.parseObject(jsonContent, List.class);
+ List<String> coordinateList = new ArrayList<>();
+ if (null != coordinate) {
+ for (JSONObject jsonObject : coordinate) {
+ Object s = jsonObject.get("coordinate");
+ coordinateList.add(String.valueOf(s));
+ }
+ orderByServeRecord.setCoordinate(coordinateList);
+ }
+ } catch (IOException e) {
+ System.out.println(e.getMessage());
+ }
+ }
+ }
if (null != serveRecord) {
orderByServeRecord.setPhoto(Arrays.stream(serveRecord.getPhoto().split(",")).collect(Collectors.toList()));
}
result.setServeRecordInfo(orderByServeRecord);
}
- private void workerInfo(OrderDetailVO result, Order order) {
+ private void workerInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
MasterWorker worker = masterWorkerService.getById(order.getServerId());
- if (null == worker) {
- throw new GlobalException("服务人员信息异常,请重试");
+ if (null != worker) {
+ OrderByWorkerVO orderByWorker = new OrderByWorkerVO();
+ orderByWorker.setProfilePicture(worker.getProfilePicture());
+ orderByWorker.setName(worker.getRealName());
+ orderByWorker.setPhone(worker.getPhone());
+ orderByWorker.setSex(worker.getSex());
+ result.setWorkerInfo(orderByWorker);
}
- OrderByWorkerVO orderByWorker = new OrderByWorkerVO();
- orderByWorker.setProfilePicture(worker.getProfilePicture());
- orderByWorker.setName(worker.getRealName());
- orderByWorker.setPhone(worker.getPhone());
- orderByWorker.setSex(worker.getSex());
- result.setWorkerInfo(orderByWorker);
}
- private void serveInfo(OrderDetailVO result, Order order) {
+ private void serveInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
RecoveryServe recoveryServe = recoveryServeService.getById(order.getServeId());
if (null == recoveryServe) {
throw new GlobalException("回收服务信息异常,请重试");
@@ -243,7 +199,7 @@
result.setServeInfo(orderByServe);
}
- private void orderInfo(OrderDetailVO result, Order order) {
+ private void orderInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
if (null == order) {
throw new GlobalException("订单信息异常,请重试");
}
@@ -255,7 +211,7 @@
result.setOrderInfo(orderInfo);
}
- private void userInfo(OrderDetailVO result, Order order) {
+ private void userInfo(OrderDetailVO result, com.ruoyi.order.api.entity.Order order) {
Integer userId = order.getUserId();
User user = userMapper.selectById(userId);
OrderByUserInfoVO orderByUserInfo = new OrderByUserInfoVO();
@@ -270,39 +226,4 @@
result.setUserInfo(orderByUserInfo);
}
- @Override
- public IPage<OrderCountVO> orderCount(String name, String phone, Page<OrderCountVO> page) {
- return baseMapper.orderCount(name, phone, page);
- }
-
- @Override
- public OrderPageCountVO orderPageCount(OrderQueryRequest orderQueryRequest) {
- List<Order> orderList = baseMapper.orderPageCount(orderQueryRequest);
- int total = 0;
- int toBeDispatched = 0;
- int stayDoorstep = 0;
- int toBeCompleted = 0;
- int completed = 0;
- int canceled = 0;
- int reInvestment = 0;
- for (Order order : orderList) {
- total++;
- Integer state = order.getState();
- if (Constants.ZERO.equals(state)) {
- toBeDispatched++;
- } else if (Constants.ONE.equals(state)) {
- stayDoorstep++;
- } else if (Constants.TWO.equals(state)) {
- toBeCompleted++;
- } else if (Constants.THREE.equals(state)) {
- completed++;
- } else if (Constants.FOUR.equals(state)) {
- canceled++;
- } else if (Constants.FIVE.equals(state)) {
- reInvestment++;
- }
- }
- return new OrderPageCountVO(total, toBeDispatched, stayDoorstep,
- toBeCompleted, completed, canceled, reInvestment);
- }
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/RoleServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/RoleServiceImpl.java
index a57c3c8..22b6ae4 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/RoleServiceImpl.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/RoleServiceImpl.java
@@ -30,6 +30,7 @@
@Override
public boolean saveRoleAndMenu(RoleRequest roleRequest, LoginUser loginUser) {
Role role = roleRequest.getRole();
+ role.setDelFlag("0");
role.setCreateBy(loginUser.getUsername());
boolean save = this.save(role);
List<String> menuIds = roleRequest.getMenuIds();
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/SendSmsServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/SendSmsServiceImpl.java
index 2784b47..88a7166 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/SendSmsServiceImpl.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/SendSmsServiceImpl.java
@@ -1,12 +1,12 @@
package com.ruoyi.admin.service.impl;
import cn.hutool.core.util.RandomUtil;
-import com.ruoyi.admin.entity.Order;
import com.ruoyi.admin.service.SendSmsService;
import com.ruoyi.admin.utils.SendSmsUtil;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.RedisConstants;
import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.order.api.entity.Order;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/ServeCoordinateServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/ServeCoordinateServiceImpl.java
deleted file mode 100644
index bb89c38..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/ServeCoordinateServiceImpl.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.admin.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.admin.entity.ServeCoordinate;
-import com.ruoyi.admin.mapper.ServeCoordinateMapper;
-import com.ruoyi.admin.service.ServeCoordinateService;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 师傅路线经纬度信息 服务实现类
- * </p>
- *
- * @author hjl
- * @since 2024-06-03
- */
-@Service
-public class ServeCoordinateServiceImpl extends ServiceImpl<ServeCoordinateMapper, ServeCoordinate> implements ServeCoordinateService {
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/ServeRecordServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/ServeRecordServiceImpl.java
deleted file mode 100644
index b1e950a..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/ServeRecordServiceImpl.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.admin.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.admin.entity.ServeRecord;
-import com.ruoyi.admin.mapper.ServeRecordMapper;
-import com.ruoyi.admin.service.ServeRecordService;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 师傅服务记录 服务实现类
- * </p>
- *
- * @author hjl
- * @since 2024-06-03
- */
-@Service
-public class ServeRecordServiceImpl extends ServiceImpl<ServeRecordMapper, ServeRecord> implements ServeRecordService {
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/UserServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/UserServiceImpl.java
index 20bda70..320b592 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/UserServiceImpl.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/UserServiceImpl.java
@@ -5,12 +5,13 @@
import com.ruoyi.admin.entity.User;
import com.ruoyi.admin.mapper.UserMapper;
import com.ruoyi.admin.request.UserDataCountRequest;
-import com.ruoyi.admin.service.OrderService;
import com.ruoyi.admin.service.UserService;
-import com.ruoyi.admin.service.WithdrawService;
import com.ruoyi.admin.vo.UserDataCountVO;
import com.ruoyi.admin.vo.UserTrendsVO;
import com.ruoyi.common.core.constant.OrderConstants;
+import com.ruoyi.order.api.entity.MoneyQueryRequest;
+import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.order.api.feignClient.WithdrawClient;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -34,9 +35,9 @@
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Resource
- private OrderService orderService;
+ private OrderClient orderClient;
@Resource
- private WithdrawService withdrawService;
+ private WithdrawClient withdrawClient;
@Override
public List<UserTrendsVO> userTrends(List<String> city) {
@@ -47,6 +48,7 @@
@Override
public UserDataCountVO userDataCount(UserDataCountRequest userDataCountRequest) {
List<String> cityList = userDataCountRequest.getCityList();
+ String type = userDataCountRequest.getCountType();
List<User> userList = lambdaQuery().eq(User::getIsDelete, 0).list();
// 用户总量
Integer userNumber = null == userList ? 0 : userList.size();
@@ -61,9 +63,11 @@
String endDateStr = String.valueOf(endDate);
// 结果数据封装
Long increaseNumber;
- BigDecimal totalMoney;
- BigDecimal withdrawalTotalMoney;
- if (OrderConstants.QUARTER.equals(userDataCountRequest.getCountType())) {
+ // 交易额
+ BigDecimal totalMoney = orderClient.tradeMoney(cityList, userDataCountRequest.getCountType()).getData();
+ BigDecimal withdrawalTotalMoney = withdrawClient.withdrawalTotalMoney(new MoneyQueryRequest(cityList, type))
+ .getData();
+ if (OrderConstants.QUARTER.equals(type)) {
// 用户增长数
LambdaQueryChainWrapper<User> wrapper = lambdaQuery().ge(User::getCreateTime, startDateStr)
.le(User::getCreateTime, endDateStr);
@@ -71,29 +75,15 @@
wrapper.in(User::getCity, cityList);
}
increaseNumber = wrapper.eq(User::getIsDelete, 0).count();
- // 用户总交易额
- totalMoney = orderService.totalMoneyByQuarter(startDateStr, endDateStr, cityList);
- // 用户提现总额
- withdrawalTotalMoney = withdrawService.withdrawalTotalMoney(cityList,startDateStr,endDateStr);
- } else if (OrderConstants.YEAR.equals(userDataCountRequest.getCountType())) {
+ } else if (OrderConstants.YEAR.equals(type)) {
// 用户增长数
increaseNumber = baseMapper.increaseNumberByYear(cityList);
- // 用户总交易额
- totalMoney = orderService.totalMoneyByYear(cityList);
- // 用户提现总额
- withdrawalTotalMoney = withdrawService.withdrawalTotalMoneyByYear(cityList);
- } else if (OrderConstants.MONTH.equals(userDataCountRequest.getCountType())) {
+ } else if (OrderConstants.MONTH.equals(type)) {
// 用户增长数
increaseNumber = baseMapper.increaseNumberByMonth(cityList);
- // 用户总交易额
- totalMoney = orderService.totalMoneyByMonth(cityList);
- // 用户提现总额
- withdrawalTotalMoney = withdrawService.withdrawalTotalMoneyByMonth(cityList);
} else {
// 数量初始化
increaseNumber = 0L;
- totalMoney = BigDecimal.ZERO;
- withdrawalTotalMoney = BigDecimal.ZERO;
}
// 查询结果判断
increaseNumber = null == increaseNumber ? 0L : increaseNumber;
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/WithdrawServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/WithdrawServiceImpl.java
index c88f7b1..88bdf65 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/WithdrawServiceImpl.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/WithdrawServiceImpl.java
@@ -4,40 +4,19 @@
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
-import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.admin.entity.Order;
-import com.ruoyi.admin.entity.User;
-import com.ruoyi.admin.entity.Withdraw;
-import com.ruoyi.admin.entity.WithdrawalSetting;
-import com.ruoyi.admin.mapper.WithdrawMapper;
-import com.ruoyi.admin.request.WithdrawExportRequest;
import com.ruoyi.admin.service.WithdrawService;
-import com.ruoyi.admin.service.WithdrawalSettingService;
-import com.ruoyi.admin.utils.vx.HttpUtil;
-import com.ruoyi.admin.vo.UserWithdrawRecordVO;
import com.ruoyi.common.core.constant.Constants;
-import com.ruoyi.common.core.constant.WechatConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.GlobalException;
-import com.ruoyi.common.core.utils.SnowflakeIdWorker;
-import com.ruoyi.common.core.utils.StringUtils;
import org.apache.commons.codec.CharEncoding;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
-import java.math.BigDecimal;
import java.net.URLEncoder;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.List;
/**
* <p>
@@ -48,44 +27,10 @@
* @since 2024-05-29
*/
@Service
-public class WithdrawServiceImpl extends ServiceImpl<WithdrawMapper, Withdraw> implements WithdrawService {
-
- @Resource
- private WithdrawalSettingService withdrawalSettingService;
-
- /**
- * 雪花算法类
- */
- private static final SnowflakeIdWorker SNOW_FLAKE_ID_WORKER = new SnowflakeIdWorker(5, 5);
-
- /**
- * 小程序id
- */
- @Value("wx.appid")
- private String appId;
- /**
- * 转账名称
- */
- @Value("wx.batchName")
- private String batchName;
- /**
- * 商户号
- */
- @Value("wx.mchId")
- private String mchId;
- /**
- * 支付证书序列号
- */
- @Value("wx.wechatPayserialNo")
- private String wechatPayserialNo;
- /**
- * 转账备注
- */
- @Value("wx.transferRemark")
- private String transferRemark;
+public class WithdrawServiceImpl implements WithdrawService {
@Override
- public R<String> excelExport(WithdrawExportRequest exportRequest, HttpServletResponse response) {
+ public R<String> excelExport(List<com.ruoyi.order.api.entity.UserWithdrawRecordVO> data, HttpServletResponse response) {
try {
response.setCharacterEncoding(Constants.UTF8);
response.setContentType("application/vnd.ms-excel");
@@ -96,16 +41,8 @@
return R.fail("excel导出失败!");
}
try {
- String nickname = exportRequest.getNickname();
- String userPhone = exportRequest.getUserPhone();
- String applyForTime = exportRequest.getApplyForTime();
- Integer state = exportRequest.getState();
- List<String> ids = exportRequest.getIdList();
- List<UserWithdrawRecordVO> list;
- if (null != ids && !ids.isEmpty()) {
- list = baseMapper.exportByIdList(ids);
- } else {
- list = baseMapper.exportList(nickname, userPhone, applyForTime, state);
+ if (null == data) {
+ throw new GlobalException("excel导出失败,请检查所筛选数据是否正确!");
}
// excel模板封装
ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream());
@@ -114,7 +51,7 @@
// 自动释放资源
try (ExcelWriter excelWriter = excelWriterBuilder.withTemplate(stream).build()) {
WriteSheet writeSheet = EasyExcelFactory.writerSheet().build();
- excelWriter.fill(list, writeSheet);
+ excelWriter.fill(data, writeSheet);
excelWriter.finish();
} catch (Exception e) {
return R.fail("excel导出失败!");
@@ -123,122 +60,6 @@
throw new RuntimeException(e);
}
return R.ok();
- }
-
- @Override
- public BigDecimal withdrawalTotalMoney(List<String> cityList,String startDateStr, String endDateStr) {
- return baseMapper.withdrawalTotalMoney(cityList,startDateStr,endDateStr);
- }
-
- @Override
- public BigDecimal withdrawalTotalMoneyByYear(List<String> cityList) {
- return baseMapper.withdrawalTotalMoneyByYear(cityList);
- }
-
- @Override
- public BigDecimal withdrawalTotalMoneyByMonth(List<String> cityList) {
- return baseMapper.withdrawalTotalMoneyByMonth(cityList);
- }
-
- @Override
- public IPage<UserWithdrawRecordVO> withdrawList(Integer userId, Page<UserWithdrawRecordVO> page) {
- return baseMapper.withdrawList(userId, page);
- }
-
- @Override
- public Boolean enableProcess(Integer enableProcess) {
- Integer[] state = {0, 1};
- boolean contains = Arrays.stream(state).collect(Collectors.toList()).contains(enableProcess);
- if (!contains) {
- throw new GlobalException("系统设置关闭/开启审核状态异常!");
- }
- return withdrawalSettingService.lambdaUpdate().set(WithdrawalSetting::getEnableProcess, enableProcess).update();
- }
-
- @Override
- public WithdrawalSetting withdrawProcess() {
- return withdrawalSettingService.lambdaQuery().one();
- }
-
- @Override
- public IPage<UserWithdrawRecordVO> withdrawPage(String nickname, String userPhone, String applyForTime, Integer state, Page<UserWithdrawRecordVO> page) {
- return baseMapper.withdrawPage(nickname, userPhone, applyForTime, state, page);
- }
-
- @Override
- public Boolean confirmWithdraw(User user, Order order) {
- // 校验提现
- List<Withdraw> list = this.lambdaQuery().eq(Withdraw::getUserId, user.getId())
- .eq(Withdraw::getOrderId, order.getId()).list();
- List<Integer> stateList = list.stream().map(Withdraw::getState).collect(Collectors.toList());
- if (stateList.contains(Constants.ONE)) {
- throw new GlobalException("当前订单提现申请已通过!");
- }
- return weChatPay(order.getOrderMoney(), user.getOpenId());
- }
-
- private boolean weChatPay(BigDecimal orderMoney, String openId) {
- if (StringUtils.isBlank(openId)) {
- return false;
- }
- Map<String, Object> postMap = new HashMap<>(8);
- // 小程序 id
- postMap.put(WechatConstants.APP_ID, appId);
- postMap.put(WechatConstants.OUT_BATCH_NO, String.valueOf(UUID.randomUUID()).replaceAll("-", ""));
- // 该笔批量转账的名称
- postMap.put(WechatConstants.BATCH_NAME, batchName);
- // 转账说明,UTF8编码,最多允许32个字符
- postMap.put(WechatConstants.BATCH_REMARK, batchName);
- // 转账金额单位为“分”。 总金额
- postMap.put(WechatConstants.TOTAL_AMOUNT, orderMoney.multiply(new BigDecimal(Constants.ONE_HUNDRED)));
- // 转账总笔数
- postMap.put(WechatConstants.TOTAL_NUM, Constants.ONE);
- List<Map<String, Object>> list = new ArrayList<>();
- Map<String, Object> subMap = new HashMap<>(4);
- // 商家明细单号 该商家下唯一
- // subMap.put("out_detail_no", RandomUtil.randomString(32))
- subMap.put(WechatConstants.OUT_DETAIL_NO, SNOW_FLAKE_ID_WORKER.nextId());
- // 转账金额
- subMap.put(WechatConstants.TRANSFER_AMOUNT, orderMoney);
- // 转账备注
- subMap.put(WechatConstants.TRANSFER_REMARK, transferRemark);
- // 用户在直连商户应用下的用户标示
- subMap.put(WechatConstants.OPEN_ID, openId);
- // 大金额需要传入真实姓名
- /*subMap.put("user_name",
- RsaCryptoUtil.encryptOAEP(userName,WechatPayV3Util.getSaveCertificates(privatekeypath)))*/
- list.add(subMap);
- postMap.put(WechatConstants.TRANSFER_DETAIL_LIST, list);
- // 使用类加载器获取资源 URL
- ClassPathResource classPathResource = new ClassPathResource("vx/apiclient_key.pem");
- /*// 获取 resources 目录下的文件路径,假设文件路径为 "resources/data/example.txt"
- String filePath = "resources/data/vx/apiclient_key.pem";
- File file = new File(filePath);
- // 输出文件的绝对路径
- String absolutePath = file.getAbsolutePath();*/
- String result = HttpUtil.postTransBatRequest(
- WechatConstants.WE_CHAT_URL_PRE,
- JSONObject.toJSONString(postMap),
- // 支付证书序列号
- wechatPayserialNo,
- // 商户号
- mchId,
- classPathResource.getPath(), WechatConstants.WE_CHAT_URL_SUF);
- JSONObject jsonObject = JSONObject.parseObject(result);
- /*
- * 成功示例
- * {
- * "out_batch_no": "plfk2020042013",
- * "batch_id": "1030000071100999991182020050700019480001",
- * "create_time": "2015-05-20T13:29:35.120+08:00"
- * }
- */
- if (null == jsonObject || null != jsonObject.get(WechatConstants.CREATE_TIME)) {
- //转账成功
- return Boolean.TRUE;
- } else {
- return Boolean.FALSE;
- }
}
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/WorkerProcessServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/WorkerProcessServiceImpl.java
index d2d04cf..6d2479a 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/WorkerProcessServiceImpl.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/WorkerProcessServiceImpl.java
@@ -56,6 +56,7 @@
String encodePassword = passwordEncoder.encode(Constants.DEFAULT_PASSWORD);
masterWorker.setPassword(encodePassword);
masterWorker.setUserNumber(Constants.DEFAULT_USER_NUMBER_PRE + RandomUtil.randomNumbers(10));
+ masterWorker.setCityStr(workerProcess.getCityStr());
masterWorkerService.save(masterWorker);
}
return updateById(workerProcess) ? R.ok() : R.fail("当前入驻申请审核失败!");
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/sorcket/WebSocketServer.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/sorcket/WebSocketServer.java
index 9381d84..a7b5e40 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/sorcket/WebSocketServer.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/sorcket/WebSocketServer.java
@@ -104,6 +104,11 @@
@OnError
public void onError(Session session, Throwable error) {
log.error("用户错误:" + this.userId + ",原因:" + error.getMessage());
+ if (WEB_SOCKET_MAP.containsKey(userId)) {
+ WEB_SOCKET_MAP.remove(userId);
+ //从set中删除
+ subOnlineCount();
+ }
error.printStackTrace();
}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/GeneratorCodeConfig.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/GeneratorCodeConfig.java
index 05947b7..12666b0 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/GeneratorCodeConfig.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/GeneratorCodeConfig.java
@@ -61,7 +61,7 @@
// 包配置
.packageConfig(builder -> builder
// 父包名
- .parent("com.ruoyi.worker")
+ .parent("com.ruoyi.user")
// 父包模块名 注释即为无
// .moduleName(scanner("模块名"))
// Entity 包名
@@ -91,7 +91,7 @@
// 开启跳过视图
// .enableSkipView()
// 增加过滤表前缀
- .addTablePrefix("ot_", "b_", "iot_", "t_")
+ .addTablePrefix("ot_", "b_", "iot_", "t_", "sys_")
// 增加过滤表后缀
.addTableSuffix("_n")
// 增加过滤字段前缀
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java
new file mode 100644
index 0000000..a7dc989
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java
@@ -0,0 +1,108 @@
+package com.ruoyi.admin.utils;
+
+import com.qcloud.cos.COSClient;
+import com.qcloud.cos.ClientConfig;
+import com.qcloud.cos.auth.BasicCOSCredentials;
+import com.qcloud.cos.auth.COSCredentials;
+import com.qcloud.cos.http.HttpProtocol;
+import com.qcloud.cos.model.ObjectMetadata;
+import com.qcloud.cos.model.PutObjectResult;
+import com.qcloud.cos.region.Region;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+import java.util.UUID;
+
+/**
+ * @author HJL
+ */
+@Component
+public class TencentCosUtil {
+
+ /**
+ * COS的SecretId
+ */
+ @Value("${cos.client.accessKey}")
+ private String secretId;
+ /**
+ * COS的SecretKey
+ */
+ @Value("${cos.client.secretKey}")
+ private String secretKey;
+ /**
+ * 文件上传后访问路径的根路径,后面要最佳文件名字与类型
+ */
+ @Value("${cos.client.rootSrc}")
+ private String rootSrc;
+ /**
+ * 上传的存储桶的地域
+ */
+ @Value("${cos.client.bucketAddr}")
+ private String bucketAddr;
+ /**
+ * 存储桶的名字,是自己在存储空间自己创建的,我创建的名字是:qq-test-1303******
+ */
+ @Value("${cos.client.bucket}")
+ private String bucketName;
+
+ /**
+ * 1.调用静态方法getCosClient()就会获得COSClient实例
+ * 2.本方法根据永久密钥初始化 COSClient的,官方是不推荐,官方推荐使用临时密钥,是可以限制密钥使用权限,创建cred时有些区别
+ *
+ * @return COSClient实例
+ */
+ private COSClient getCosClient() {
+ // 1 初始化用户身份信息(secretId, secretKey)。
+ COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
+ // 2.1 设置存储桶的地域(上文获得)
+ Region region = new Region(bucketAddr);
+ ClientConfig clientConfig = new ClientConfig(region);
+ // 2.2 使用https协议传输
+ clientConfig.setHttpProtocol(HttpProtocol.https);
+ // 生成 cos 客户端
+ return new COSClient(cred, clientConfig);
+ }
+
+ /**
+ * 只要调用静态方法upLoadFile(MultipartFile multipartFile)就可以获取上传后文件的全路径
+ *
+ * @param file
+ * @return 返回文件的浏览全路径
+ */
+ public String upLoadFile(MultipartFile file) {
+ try {
+ // 获取上传的文件的输入流
+ InputStream inputStream = file.getInputStream();
+ // 避免文件覆盖,获取文件的原始名称,如123.jpg,然后通过截取获得文件的后缀,也就是文件的类型
+ String originalFilename = file.getOriginalFilename();
+ //获取文件的类型
+ String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
+ //使用UUID工具 创建唯一名称,放置文件重名被覆盖,在拼接上上命令获取的文件类型
+ String fileName = UUID.randomUUID() + fileType;
+ // 指定文件上传到 COS 上的路径,即对象键。最终文件会传到存储桶名字中的images文件夹下的fileName名字
+ String key = "images/" + fileName;
+ // 创建上传Object的Metadata
+ ObjectMetadata objectMetadata = new ObjectMetadata();
+ // - 使用输入流存储,需要设置请求长度
+ objectMetadata.setContentLength(inputStream.available());
+ // - 设置缓存
+ objectMetadata.setCacheControl("no-cache");
+ // - 设置Content-Type
+ objectMetadata.setContentType(fileType);
+ //上传文件
+ PutObjectResult putResult = getCosClient().putObject(bucketName, key, inputStream, objectMetadata);
+ // 创建文件的网络访问路径
+ String url = rootSrc + key;
+ //关闭 cosClient,并释放 HTTP 连接的后台管理线程
+ getCosClient().shutdown();
+ return url;
+ } catch (Exception e) {
+ e.printStackTrace();
+ // 发生IO异常、COS连接异常等,返回空
+ return null;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/EvaluatePageVO.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/EvaluatePageVO.java
deleted file mode 100644
index b397e2f..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/EvaluatePageVO.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.ruoyi.admin.vo;
-
-import com.ruoyi.admin.entity.Evaluate;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * @author HJL
- * @version 1.0
- * @since 2024-06-01 12:57
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-public class EvaluatePageVO extends Evaluate {
-
- @ApiModelProperty("用户ID(昵称)")
- private String userNo;
-
- @ApiModelProperty("订单编号")
- private String orderNumber;
-
- @ApiModelProperty("师傅姓名")
- private String workerName;
-
- @ApiModelProperty("师傅电话")
- private String workerPhone;
-
-}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/OrderByServeRecordVO.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/OrderByServeRecordVO.java
index 2b604ec..3499893 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/OrderByServeRecordVO.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/OrderByServeRecordVO.java
@@ -18,7 +18,7 @@
public class OrderByServeRecordVO {
@ApiModelProperty("接单时间")
- @JsonFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
private Date acceptOrderTime;
@ApiModelProperty("上门时间")
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/OrderInfoVO.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/OrderInfoVO.java
index 51e6b00..099f10b 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/OrderInfoVO.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/OrderInfoVO.java
@@ -20,7 +20,7 @@
private String orderNumber;
@ApiModelProperty("下单时间")
- @JsonFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
private Date placeOrderTime;
@ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派)")
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/bootstrap.yaml b/ruoyi-service/ruoyi-admin/src/main/resources/bootstrap.yaml
index 88c385e..8316a23 100644
--- a/ruoyi-service/ruoyi-admin/src/main/resources/bootstrap.yaml
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/bootstrap.yaml
@@ -22,14 +22,22 @@
service: ${spring.application.name}
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
name: ${spring.application.name}
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
\ No newline at end of file
+ - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+knife4j:
+ enable-aggregation: true
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataAddressMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataAddressMapper.xml
new file mode 100644
index 0000000..fbb63a5
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataAddressMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataAddressMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataAddress">
+ <id column="id" property="id" />
+ <result column="uid" property="uid" />
+ <result column="type" property="type" />
+ <result column="username" property="username" />
+ <result column="phone" property="phone" />
+ <result column="address" property="address" />
+ <result column="latitude" property="latitude" />
+ <result column="longitude" property="longitude" />
+ <result column="xxdz" property="xxdz" />
+ <result column="create_at" property="createAt" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataAdvantageMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataAdvantageMapper.xml
new file mode 100644
index 0000000..07c71cc
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataAdvantageMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataAdvantageMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataAdvantage">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="remark" property="remark" />
+ <result column="sort" property="sort" />
+ <result column="create_at" property="createAt" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataCateMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataCateMapper.xml
new file mode 100644
index 0000000..8a930c1
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataCateMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataCateMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataCate">
+ <id column="id" property="id" />
+ <result column="pid" property="pid" />
+ <result column="name" property="name" />
+ <result column="index_name" property="indexName" />
+ <result column="cover" property="cover" />
+ <result column="remark" property="remark" />
+ <result column="remark_jj" property="remarkJj" />
+ <result column="sort" property="sort" />
+ <result column="index_status" property="indexStatus" />
+ <result column="create_at" property="createAt" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataCollectMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataCollectMapper.xml
new file mode 100644
index 0000000..15a0547
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataCollectMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataCollectMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataCollect">
+ <id column="id" property="id" />
+ <result column="uid" property="uid" />
+ <result column="pid" property="pid" />
+ <result column="create_at" property="createAt" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataDrawMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataDrawMapper.xml
new file mode 100644
index 0000000..0815db2
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataDrawMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataDrawMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataDraw">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="image" property="image" />
+ <result column="odds" property="odds" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataGoodsMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataGoodsMapper.xml
new file mode 100644
index 0000000..719f3c9
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataGoodsMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataGoodsMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataGoods">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="remark" property="remark" />
+ <result column="price" property="price" />
+ <result column="pg_price" property="pgPrice" />
+ <result column="pid" property="pid" />
+ <result column="cateids" property="cateids" />
+ <result column="cover" property="cover" />
+ <result column="slider" property="slider" />
+ <result column="sort" property="sort" />
+ <result column="create_at" property="createAt" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataMessageMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataMessageMapper.xml
new file mode 100644
index 0000000..7e359b1
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataMessageMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataMessageMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataMessage">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="content" property="content" />
+ <result column="sort" property="sort" />
+ <result column="create_at" property="createAt" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataOrderMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataOrderMapper.xml
new file mode 100644
index 0000000..045f6da
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataOrderMapper.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataOrderMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataOrder">
+ <id column="id" property="id" />
+ <result column="order_type" property="orderType" />
+ <result column="order_no" property="orderNo" />
+ <result column="product_id" property="productId" />
+ <result column="uid" property="uid" />
+ <result column="server_uid" property="serverUid" />
+ <result column="price" property="price" />
+ <result column="bt_price" property="btPrice" />
+ <result column="username" property="username" />
+ <result column="phone" property="phone" />
+ <result column="province" property="province" />
+ <result column="city" property="city" />
+ <result column="area" property="area" />
+ <result column="address" property="address" />
+ <result column="xx_address" property="xxAddress" />
+ <result column="latitude" property="latitude" />
+ <result column="longitude" property="longitude" />
+ <result column="sm_time" property="smTime" />
+ <result column="remark" property="remark" />
+ <result column="cancel_remark" property="cancelRemark" />
+ <result column="pj_level" property="pjLevel" />
+ <result column="pj_remark" property="pjRemark" />
+ <result column="reason" property="reason" />
+ <result column="completeTime" property="completeTime" />
+ <result column="yhqrtp" property="yhqrtp" />
+ <result column="jjmptp" property="jjmptp" />
+ <result column="njtp" property="njtp" />
+ <result column="wjhqttp" property="wjhqttp" />
+ <result column="drawnum" property="drawnum" />
+ <result column="status" property="status" />
+ <result column="jd_status" property="jdStatus" />
+ <result column="zt_server_uid" property="ztServerUid" />
+ <result column="pj_status" property="pjStatus" />
+ <result column="time_status" property="timeStatus" />
+ <result column="create_at" property="createAt" />
+ <result column="server_sendnum" property="serverSendnum" />
+ <result column="user_sendnum" property="userSendnum" />
+ <result column="print" property="print" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataQuestionMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataQuestionMapper.xml
new file mode 100644
index 0000000..5278f84
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataQuestionMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataQuestionMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataQuestion">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="remark" property="remark" />
+ <result column="sort" property="sort" />
+ <result column="create_at" property="createAt" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataTechnicianMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataTechnicianMapper.xml
new file mode 100644
index 0000000..2677440
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataTechnicianMapper.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataTechnicianMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataTechnician">
+ <id column="id" property="id" />
+ <result column="uid" property="uid" />
+ <result column="city" property="city" />
+ <result column="username" property="username" />
+ <result column="phone" property="phone" />
+ <result column="car_type" property="carType" />
+ <result column="car_number" property="carNumber" />
+ <result column="idcard" property="idcard" />
+ <result column="idcard_z" property="idcardZ" />
+ <result column="idcard_f" property="idcardF" />
+ <result column="xsz" property="xsz" />
+ <result column="work_status" property="workStatus" />
+ <result column="status" property="status" />
+ <result column="create_at" property="createAt" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataTransferMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataTransferMapper.xml
new file mode 100644
index 0000000..a72ad93
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataTransferMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataTransferMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataTransfer">
+ <id column="id" property="id" />
+ <result column="uid" property="uid" />
+ <result column="code" property="code" />
+ <result column="charge_amount" property="chargeAmount" />
+ <result column="amount" property="amount" />
+ <result column="trade_no" property="tradeNo" />
+ <result column="trade_time" property="tradeTime" />
+ <result column="status" property="status" />
+ <result column="create_at" property="createAt" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataUserMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataUserMapper.xml
new file mode 100644
index 0000000..670cbe2
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/DataUserMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.admin.mapper.DataUserMapper">
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.DataUser">
+ <id column="id" property="id"/>
+ <result column="openid" property="openid"/>
+ <result column="avatar" property="avatar"/>
+ <result column="nickname" property="nickname"/>
+ <result column="price" property="price"/>
+ <result column="status" property="status"/>
+ <result column="sh_status" property="shStatus"/>
+ <result column="create_at" property="createAt"/>
+ </resultMap>
+</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/EvaluateMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/EvaluateMapper.xml
deleted file mode 100644
index 85b7eab..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/EvaluateMapper.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.admin.mapper.EvaluateMapper">
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.Evaluate">
- <id column="id" property="id"/>
- <result column="user_id" property="userId"/>
- <result column="user_phone" property="userPhone"/>
- <result column="order_id" property="orderId"/>
- <result column="content" property="content"/>
- <result column="worker_id" property="workerId"/>
- <result column="star_rating" property="starRating"/>
- <result column="createBy" property="createBy"/>
- <result column="updateBy" property="updateBy"/>
- <result column="createTime" property="createTime"/>
- <result column="updateTime" property="updateTime"/>
- <result column="is_delete" property="isDelete"/>
- </resultMap>
-
- <resultMap id="pageMap" type="com.ruoyi.admin.vo.EvaluatePageVO">
- <id column="id" property="id"/>
- <result column="user_id" property="userId"/>
- <result column="user_phone" property="userPhone"/>
- <result column="order_id" property="orderId"/>
- <result column="content" property="content"/>
- <result column="worker_id" property="workerId"/>
- <result column="star_rating" property="starRating"/>
- <result column="createBy" property="createBy"/>
- <result column="updateBy" property="updateBy"/>
- <result column="createTime" property="createTime"/>
- <result column="updateTime" property="updateTime"/>
- <result column="is_delete" property="isDelete"/>
- <result column="user_no" property="userNo"/>
- <result column="order_number" property="orderNumber"/>
- <result column="real_name" property="workerName"/>
- <result column="phone" property="workerPhone"/>
- </resultMap>
-
- <select id="queryPageList" resultMap="pageMap">
- select e.*, u.user_no, o.order_number, m.real_name, m.phone
- from t_evaluate e
- left join t_user u on e.user_id = u.id
- left join t_order o on e.order_id = o.id
- left join sys_master_worker m on e.worker_id = m.id
- <where>
- e.is_delete = 0
- and u.is_delete = 0
- and o.is_delete = 0
- and m.is_delete = 0
- <if test="userName != null and userName != ''">
- and u.user_no like concat('%', #{userName}, '%')
- </if>
- <if test="orderNumber != null and orderNumber != ''">
- and o.order_number like concat('%', #{orderNumber}, '%')
- </if>
- <if test="workerName != null and workerName != ''">
- and m.real_name like concat('%', #{workerName}, '%')
- </if>
- </where>
- order by e.createTime desc
- </select>
-
- <select id="evaluateList" resultMap="pageMap">
- select *
- from t_evaluate e
- left join t_order o on e.order_id = o.id
- left join sys_master_worker mw on e.worker_id = mw.id
- where e.is_delete = 0
- and o.is_delete = 0
- and mw.is_delete = 0
- </select>
-</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/MasterWorkerMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/MasterWorkerMapper.xml
index 18b6565..329c6dd 100644
--- a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/MasterWorkerMapper.xml
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/MasterWorkerMapper.xml
@@ -1,44 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.admin.mapper.MasterWorkerMapper">
-
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.MasterWorker">
- <id column="id" property="id" />
- <result column="city" property="city" />
- <result column="sex" property="sex" />
- <result column="birthday" property="birthday" />
- <result column="id_number" property="idNumber" />
- <result column="vehicle_type" property="vehicleType" />
- <result column="vehicle_number" property="vehicleNumber" />
- <result column="phone" property="phone" />
- <result column="profile_picture" property="profilePicture" />
- <result column="identity_photo" property="identityPhoto" />
- <result column="driving_license" property="drivingLicense" />
- <result column="is_enable" property="isEnable" />
- <result column="createBy" property="createBy" />
- <result column="updateBy" property="updateBy" />
- <result column="createTime" property="createTime" />
- <result column="updateTime" property="updateTime" />
- <result column="is_delete" property="isDelete" />
+ <id column="id" property="id"/>
+ <result column="city" property="city"/>
+ <result column="sex" property="sex"/>
+ <result column="birthday" property="birthday"/>
+ <result column="id_number" property="idNumber"/>
+ <result column="vehicle_type" property="vehicleType"/>
+ <result column="vehicle_number" property="vehicleNumber"/>
+ <result column="phone" property="phone"/>
+ <result column="profile_picture" property="profilePicture"/>
+ <result column="identity_photo" property="identityPhoto"/>
+ <result column="driving_license" property="drivingLicense"/>
+ <result column="is_enable" property="isEnable"/>
+ <result column="createBy" property="createBy"/>
+ <result column="updateBy" property="updateBy"/>
+ <result column="createTime" property="createTime"/>
+ <result column="updateTime" property="updateTime"/>
+ <result column="is_delete" property="isDelete"/>
</resultMap>
- <select id="workerRanking" resultType="com.ruoyi.admin.vo.MasterWorkerRankVO">
- SELECT u.real_name, u.profile_picture, COUNT(o.serve_id) AS orderNumber
- FROM sys_master_worker u
- LEFT JOIN t_order o ON u.id = o.serve_id
- <where>
- <if test="ids != null and ids.size() != 0">
- u.id in
- <foreach collection="ids" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- and o.is_delete = 0
- and u.is_delete = 0
- and u.is_enable = 1
- </where>
- GROUP BY u.id
- ORDER BY orderNumber DESC;
- </select>
</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/OrderMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/OrderMapper.xml
index ad56b5b..05b26a0 100644
--- a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/OrderMapper.xml
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/OrderMapper.xml
@@ -28,332 +28,4 @@
<result column="apply_reason" property="applyReason"/>
</resultMap>
-
- <select id="orderCountByYear" resultType="com.ruoyi.admin.vo.OrderQueryVO">
- SELECT DATE_FORMAT(createTime, '%Y-%m') AS dateTime, COUNT(*) AS number, sum(serve_price) as totalPrice
- FROM t_order
- <where>
- YEAR(createTime) = YEAR(NOW())
- <if test="cityList != null and cityList.size() != 0">
- and city in
- <foreach collection="cityList" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- <if test="orderState != null and orderState != ''">
- and state = #{orderState}
- </if>
- <if test="startTime != null and startTime != ''">
- and createTime <![CDATA[ >= ]]> #{startTime}
- </if>
- <if test="endTime != null and endTime != ''">
- and createTime <![CDATA[ <= ]]> #{endTime}
- </if>
- </where>
- GROUP BY DATE_FORMAT(createTime, '%Y-%m')
- order by dateTime
- </select>
-
- <select id="orderCountByWeek" resultType="com.ruoyi.admin.vo.OrderQueryVO">
- SELECT DATE_FORMAT(createTime, '%Y-%m-%d') AS dateTime, COUNT(*) AS number, sum(serve_price) as totalPrice
- FROM t_order
- <where>
- YEARWEEK(DATE_FORMAT(createTime, '%Y-%m-%d')) = YEARWEEK(NOW())
- <if test="cityList != null and cityList.size() != 0">
- and city in
- <foreach collection="cityList" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- <if test="orderState != null and orderState != ''">
- and state = #{orderState}
- </if>
- <if test="startTime != null and startTime != ''">
- and createTime <![CDATA[ >= ]]> #{startTime}
- </if>
- <if test="endTime != null and endTime != ''">
- and createTime <![CDATA[ <= ]]> #{endTime}
- </if>
- </where>
- GROUP BY DATE_FORMAT(createTime, '%Y-%m-%d')
- order by dateTime
- </select>
-
- <select id="orderCountByMonth" resultType="com.ruoyi.admin.vo.OrderQueryVO">
- SELECT DATE_FORMAT(createTime, '%Y-%m-%d') AS dateTime, COUNT(*) AS number, sum(serve_price) as totalPrice
- FROM t_order
- <where>
- MONTH(createTime) = MONTH(NOW())
- AND YEAR(createTime) = YEAR(NOW())
- <if test="cityList != null and cityList.size() != 0">
- and city in
- <foreach collection="cityList" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- <if test="orderState != null and orderState != ''">
- and state = #{orderState}
- </if>
- <if test="startTime != null and startTime != ''">
- and createTime <![CDATA[ >= ]]> #{startTime}
- </if>
- <if test="endTime != null and endTime != ''">
- and createTime <![CDATA[ <= ]]> #{endTime}
- </if>
- </where>
- GROUP BY DATE_FORMAT(createTime, '%Y-%m-%d')
- order by dateTime
- </select>
-
- <select id="orderCountByToday" resultType="com.ruoyi.admin.vo.OrderQueryVO">
- SELECT DATE_FORMAT(createTime, '%Y-%m-%d %H') AS dateTime, COUNT(*) AS number, sum(serve_price) as totalPrice
- FROM t_order
- <where>
- DATE(createTime) = CURDATE()
- <if test="cityList != null and cityList.size() != 0">
- and city in
- <foreach collection="cityList" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- <if test="orderState != null and orderState != ''">
- and state = #{orderState}
- </if>
- <if test="startTime != null and startTime != ''">
- and createTime <![CDATA[ >= ]]> #{startTime}
- </if>
- <if test="endTime != null and endTime != ''">
- and createTime <![CDATA[ <= ]]> #{endTime}
- </if>
- </where>
- GROUP BY DATE_FORMAT(createTime, '%Y-%m-%d %H')
- order by dateTime
- </select>
-
- <select id="totalMoneyByQuarter" resultType="java.math.BigDecimal">
- select sum(order_money)
- from t_order
- <where>
- is_delete = 0
- and state = 4
- <if test="cityList != null and cityList.size() != 0">
- and city in
- <foreach collection="cityList" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- <if test="start != null and start != ''">
- and createTime <![CDATA[ >= ]]> #{start}
- </if>
- <if test="end != null and end != ''">
- and createTime <![CDATA[ <= ]]> #{end}
- </if>
- </where>
- </select>
-
- <select id="totalMoneyByYear" resultType="java.math.BigDecimal">
- SELECT sum(serve_price) as totalPrice
- FROM t_order
- where YEAR(createTime) = YEAR(NOW())
- and is_delete = 0
- and state = 4
- <if test="cityList != null and cityList.size() != 0">
- and city in
- <foreach collection="cityList" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- </select>
-
- <select id="totalMoneyByMonth" resultType="java.math.BigDecimal">
- SELECT sum(serve_price) as totalPrice
- FROM t_order
- where MONTH(createTime) = MONTH(NOW())
- AND YEAR(createTime) = YEAR(NOW())
- and is_delete = 0
- and state = 4
- <if test="cityList != null and cityList.size() != 0">
- and city in
- <foreach collection="cityList" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- </select>
-
- <select id="orderCount" resultType="com.ruoyi.admin.vo.OrderCountVO">
- SELECT w.real_name AS realName,
- w.profile_picture as profilePicture,
- SUM(CASE WHEN o.state = 2 THEN 1 ELSE 0 END) AS toBeCompletedNumber,
- SUM(CASE WHEN o.state = 3 THEN 1 ELSE 0 END) AS completedNumber,
- SUM(CASE WHEN o.state = 4 THEN 1 ELSE 0 END) AS reInvestment
- FROM t_order o
- LEFT JOIN sys_master_worker w ON o.server_id = w.id
- WHERE w.is_delete = 0
- AND o.is_delete = 0
- <if test="phone != null and phone != ''">
- and w.phone like concat('%', #{phone}, '%')
- </if>
- <if test="name != null and name != ''">
- and w.real_name like concat('%', #{name}, '%')
- </if>
- GROUP BY w.real_name, w.profile_picture
- </select>
-
- <select id="queryPage" resultMap="BaseResultMap">
- select *
- from t_order o
- <where>
- o.is_delete = 0
- <if test="data.orderNumber != null and data.orderNumber != ''">
- and o.order_number like concat('%', #{data.orderNumber}, '%')
- </if>
- <if test="data.cityName != null and data.cityName != ''">
- and o.city like concat('%', #{data.cityName}, '%')
- </if>
- <if test="data.reservationName != null and data.reservationName != ''">
- and o.reservation_name like concat('%', #{data.reservationName}, '%')
- </if>
- <if test="data.reservationPhone != null and data.reservationPhone != ''">
- and o.reservation_phone like concat('%', #{data.reservationPhone}, '%')
- </if>
- <if test="data.state != null">
- and o.state = #{data.state}
- </if>
- <if test="data.workerName != null and data.workerName != ''">
- and o.server_name like concat('%', #{data.workerName}, '%')
- </if>
- <if test="data.workerPhone != null and data.workerPhone != ''">
- and o.server_phone like concat('%', #{data.workerPhone}, '%')
- </if>
- <if test="data.serveName != null and data.serveName != ''">
- and o.serve_name like concat('%', #{data.serveName}, '%')
- </if>
- <if test="data.orderTimeStart != null and data.orderTimeStart != ''">
- and DATE(o.createTime) <![CDATA[ >= ]]> #{data.orderTimeStart}
- </if>
- <if test="data.orderTimeEnd != null and data.orderTimeEnd != ''">
- and DATE(o.createTime) <![CDATA[ <= ]]> #{data.orderTimeEnd}
- </if>
- <if test="data.startTime != null and data.startTime != ''">
- and DATE(o.time) <![CDATA[ >= ]]> #{data.startTime}
- </if>
- <if test="data.endTime != null and data.endTime != ''">
- and DATE(o.time) <![CDATA[ <= ]]> #{data.endTime}
- </if>
- </where>
- order by o.createTime desc
- </select>
-
- <select id="orderPageCount" resultMap="BaseResultMap">
- select o.*
- from t_order o
- <where>
- o.is_delete = 0
- <if test="data.orderNumber != null and data.orderNumber != ''">
- and o.order_number like concat('%', #{data.orderNumber}, '%')
- </if>
- <if test="data.cityName != null and data.cityName != ''">
- and o.city like concat('%', #{data.cityName}, '%')
- </if>
- <if test="data.reservationName != null and data.reservationName != ''">
- and o.reservation_name like concat('%', #{data.reservationName}, '%')
- </if>
- <if test="data.reservationPhone != null and data.reservationPhone != ''">
- and o.reservation_phone like concat('%', #{data.reservationPhone}, '%')
- </if>
- <if test="data.state != null">
- and o.state = #{data.state}
- </if>
- <if test="data.workerName != null and data.workerName != ''">
- and o.server_name like concat('%', #{data.workerName}, '%')
- </if>
- <if test="data.workerPhone != null and data.workerPhone != ''">
- and o.server_phone like concat('%', #{data.workerPhone}, '%')
- </if>
- <if test="data.serveName != null and data.serveName != ''">
- and o.serve_name like concat('%', #{data.serveName}, '%')
- </if>
- <if test="data.orderTimeStart != null and data.orderTimeStart != ''">
- and DATE(o.createTime) <![CDATA[ >= ]]> #{data.orderTimeStart}
- </if>
- <if test="data.orderTimeEnd != null and data.orderTimeEnd != ''">
- and DATE(o.createTime) <![CDATA[ <= ]]> #{data.orderTimeEnd}
- </if>
- <if test="data.startTime != null and data.startTime != ''">
- and DATE(o.time) <![CDATA[ >= ]]> #{data.startTime}
- </if>
- <if test="data.endTime != null and data.endTime != ''">
- and DATE(o.time) <![CDATA[ <= ]]> #{data.endTime}
- </if>
- </where>
- </select>
-
- <select id="exportByIdList" resultMap="BaseResultMap">
- select reservation_name,
- reservation_phone,
- reservation_address,
- time,
- serve_name,
- server_name,
- server_phone
- from t_order
- <where>
- id in
- <foreach collection="list" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </where>
- </select>
-
- <select id="exportList" resultMap="BaseResultMap">
- select o.reservation_name,
- o.reservation_phone,
- o.reservation_address,
- o.time,
- o.serve_name,
- o.server_name,
- o.server_phone
- from t_order o
- left join sys_change_dispatch c on o.id = c.order_id
- <where>
- o.is_delete = 0
- AND (c.is_delete = 0 OR c.is_delete IS NULL)
- <if test="data.orderNumber != null and data.orderNumber != ''">
- and o.order_number like concat('%', #{data.orderNumber}, '%')
- </if>
- <if test="data.cityName != null and data.cityName != ''">
- and o.city like concat('%', #{data.cityName}, '%')
- </if>
- <if test="data.reservationName != null and data.reservationName != ''">
- and o.reservation_name like concat('%', #{data.reservationName}, '%')
- </if>
- <if test="data.reservationPhone != null and data.reservationPhone != ''">
- and o.reservation_phone like concat('%', #{data.reservationPhone}, '%')
- </if>
- <if test="data.state != null">
- and o.state = #{data.state}
- </if>
- <if test="data.workerName != null and data.workerName != ''">
- and o.server_name like concat('%', #{data.workerName}, '%')
- </if>
- <if test="data.workerPhone != null and data.workerPhone != ''">
- and o.server_phone like concat('%', #{data.workerPhone}, '%')
- </if>
- <if test="data.serveName != null and data.serveName != ''">
- and o.serve_name like concat('%', #{data.serveName}, '%')
- </if>
- <if test="data.orderTimeStart != null and data.orderTimeStart != ''">
- and DATE(o.createTime) <![CDATA[ >= ]]> #{data.orderTimeStart}
- </if>
- <if test="data.orderTimeEnd != null and data.orderTimeEnd != ''">
- and DATE(o.createTime) <![CDATA[ <= ]]> #{data.orderTimeEnd}
- </if>
- <if test="data.startTime != null and data.startTime != ''">
- and DATE(o.time) <![CDATA[ >= ]]> #{data.startTime}
- </if>
- <if test="data.endTime != null and data.endTime != ''">
- and DATE(o.time) <![CDATA[ <= ]]> #{data.endTime}
- </if>
- </where>
- </select>
</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/ServeCoordinateMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/ServeCoordinateMapper.xml
deleted file mode 100644
index 77e4a31..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/ServeCoordinateMapper.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.admin.mapper.ServeCoordinateMapper">
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.ServeCoordinate">
- <id column="id" property="id"/>
- <result column="coordinate" property="coordinate"/>
- <result column="createBy" property="createBy"/>
- <result column="updateBy" property="updateBy"/>
- <result column="createTime" property="createTime"/>
- <result column="updateTime" property="updateTime"/>
- <result column="is_delete" property="isDelete"/>
- </resultMap>
-</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/ServeRecordMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/ServeRecordMapper.xml
deleted file mode 100644
index f8551bb..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/ServeRecordMapper.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.admin.mapper.ServeRecordMapper">
-
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.ServeRecord">
- <id column="id" property="id" />
- <result column="order_id" property="orderId" />
- <result column="photo" property="photo" />
- <result column="remark" property="remark" />
- <result column="createBy" property="createBy" />
- <result column="updateBy" property="updateBy" />
- <result column="createTime" property="createTime" />
- <result column="updateTime" property="updateTime" />
- <result column="is_delete" property="isDelete" />
- </resultMap>
-
-</mapper>
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/SysUserMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/SysUserMapper.xml
index 792dc0f..f842c7d 100644
--- a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/SysUserMapper.xml
+++ b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/SysUserMapper.xml
@@ -21,12 +21,13 @@
</resultMap>
<select id="queryPage" resultMap="BaseResultMap">
- select u.*, r.role_name,r.role_id
+ select u.*, r.role_name, r.role_id
from sys_user u
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on ur.role_id = r.role_id
<where>
u.is_delete = 0
+ and u.franchisee_id is null
<if test="nickName != null and nickName != ''">
and u.nick_name like CONCAT('%', #{nickName}, '%')
</if>
@@ -34,7 +35,7 @@
and u.account like CONCAT('%', #{account}, '%')
</if>
<if test="role != null and role != ''">
- and r.role_name like CONCAT('%', #{role}, '%')
+ and r.role_id = #{role}
</if>
</where>
order by u.create_time desc
diff --git a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/WithdrawMapper.xml b/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/WithdrawMapper.xml
deleted file mode 100644
index e0aec8f..0000000
--- a/ruoyi-service/ruoyi-admin/src/main/resources/mapper/admin/WithdrawMapper.xml
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.admin.mapper.WithdrawMapper">
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="com.ruoyi.admin.entity.Withdraw">
- <id column="id" property="id"/>
- <result column="user_id" property="userId"/>
- <result column="user_phone" property="userPhone"/>
- <result column="apply_for_time" property="applyForTime"/>
- <result column="apply_for_money" property="applyForMoney"/>
- <result column="state" property="state"/>
- <result column="opinion" property="opinion"/>
- <result column="createBy" property="createBy"/>
- <result column="updateBy" property="updateBy"/>
- <result column="createTime" property="createTime"/>
- <result column="updateTime" property="updateTime"/>
- <result column="is_delete" property="isDelete"/>
- </resultMap>
-
- <select id="withdrawalTotalMoney" resultType="java.math.BigDecimal">
- SELECT sum(w.apply_for_money)
- FROM t_withdraw w
- LEFT JOIN t_user u on w.user_id = u.id
- <where>
- w.is_delete = 0
- <if test="start != null and start != ''">
- and w.createTime <![CDATA[ >= ]]> #{start}
- </if>
- <if test="end != null and end != ''">
- and w.createTime <![CDATA[ <= ]]> #{end}
- </if>
- <if test="cityList != null and cityList.size() != 0">
- and u.city in
- <foreach collection="cityList" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- </where>
- </select>
-
- <select id="withdrawalTotalMoneyByYear" resultType="java.math.BigDecimal">
- SELECT sum(w.apply_for_money)
- FROM t_withdraw w
- LEFT JOIN t_user u on w.user_id = u.id
- <where>
- YEAR(w.createTime) = YEAR(NOW())
- and w.is_delete = 0
- <if test="cityList != null and cityList.size() != 0">
- and u.city in
- <foreach collection="cityList" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- </where>
- </select>
-
- <select id="withdrawalTotalMoneyByMonth" resultType="java.math.BigDecimal">
- SELECT sum(w.apply_for_money)
- FROM t_withdraw w
- LEFT JOIN t_user u on w.user_id = u.id
- <where>
- YEAR(w.createTime) = YEAR(NOW())
- AND YEAR(w.createTime) = YEAR(NOW())
- and w.is_delete = 0
- <if test="cityList != null and cityList.size() != 0">
- and u.city in
- <foreach collection="cityList" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </if>
- </where>
- </select>
-
- <!--vo类映射-->
- <resultMap id="voMap" type="com.ruoyi.admin.vo.UserWithdrawRecordVO">
- <id column="id" property="id"/>
- <result column="user_id" property="userId"/>
- <result column="apply_for_time" property="applyForTime"/>
- <result column="apply_for_money" property="applyForMoney"/>
- <result column="state" property="state"/>
- <result column="opinions" property="opinions"/>
- <result column="user_no" property="userNo"/>
- <result column="profile_picture" property="profilePicture"/>
- <result column="nickname" property="nickname"/>
- <result column="phone" property="userPhone"/>
- </resultMap>
- <select id="withdrawList" resultMap="voMap">
- SELECT w.*, u.user_no, u.profile_picture, u.nickname
- FROM t_withdraw w
- LEFT JOIN t_user u on w.user_id = u.id
- <where>
- w.is_delete = 0
- and u.is_delete = 0
- <if test="userId != null and userId != ''">
- and w.user_id = #{userId}
- </if>
- </where>
- </select>
-
- <select id="withdrawPage" resultMap="voMap">
- SELECT w.*, u.user_no, u.profile_picture, u.nickname
- FROM t_withdraw w
- LEFT JOIN t_user u on w.user_id = u.id
- <where>
- w.is_delete = 0
- and u.is_delete = 0
- <if test="name != null and name != ''">
- and u.nickname like concat('%', #{name}, '%')
- </if>
- <if test="phone != null and phone != ''">
- and u.phone like concat('%', #{phone}, '%')
- </if>
- <if test="time != null and time != ''">
- and DATE(w.apply_for_time) = #{time}
- </if>
- <if test="state != null">
- and w.state = #{state}
- </if>
- </where>
- order by w.createTime desc
- </select>
-
- <select id="exportList" resultMap="voMap">
- SELECT w.*, u.user_no, u.profile_picture, u.nickname, u.phone
- FROM t_withdraw w
- LEFT JOIN t_user u on w.user_id = u.id
- <where>
- w.is_delete = 0
- and u.is_delete = 0
- <if test="name != null and name != ''">
- and u.nickname like concat('%', #{name}, '%')
- </if>
- <if test="phone != null and phone != ''">
- and u.phone like concat('%', #{phone}, '%')
- </if>
- <if test="time != null and time != ''">
- and DATE(w.apply_for_time) = #{time}
- </if>
- <if test="state != null">
- and w.state = #{state}
- </if>
- </where>
- order by w.createTime desc
- </select>
-
- <select id="exportByIdList" resultMap="voMap">
- SELECT w.*, u.user_no, u.profile_picture, u.nickname
- FROM t_withdraw w
- LEFT JOIN t_user u on w.user_id = u.id
- <where>
- w.is_delete = 0
- and u.is_delete = 0
- and w.id in
- <foreach collection="list" item="id" open="(" separator="," close=")">
- #{id}
- </foreach>
- </where>
- order by w.createTime desc
- </select>
-</mapper>
diff --git a/ruoyi-service/ruoyi-order/.gitignore b/ruoyi-service/ruoyi-order/.gitignore
new file mode 100644
index 0000000..549e00a
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/ruoyi-service/ruoyi-order/pom.xml b/ruoyi-service/ruoyi-order/pom.xml
new file mode 100644
index 0000000..3231923
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/pom.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-service</artifactId>
+ <version>3.6.4</version>
+ </parent>
+
+ <groupId>org.example</groupId>
+ <artifactId>ruoyi-order</artifactId>
+
+ <properties>
+ <maven.compiler.source>8</maven.compiler.source>
+ <maven.compiler.target>8</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-websocket</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.github.wechatpay-apiv3</groupId>
+ <artifactId>wechatpay-apache-httpclient</artifactId>
+ <version>0.4.7</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>easyexcel</artifactId>
+ <version>3.3.0</version>
+ <type>pom</type>
+ </dependency>
+
+ <!-- mybatis-plus -->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-boot-starter</artifactId>
+ <version>3.5.1</version>
+ </dependency>
+ <!-- 代码生成器 -->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-generator</artifactId>
+ <version>3.5.1</version>
+ </dependency>
+ <!--MYSQL 依赖-->
+ <dependency>
+ <groupId>com.mysql</groupId>
+ <artifactId>mysql-connector-j</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <!--模板引擎freemarker依赖-->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-freemarker</artifactId>
+ </dependency>
+ <!-- 雪花ID的依赖-->
+ <dependency>
+ <groupId>com.github.yitter</groupId>
+ <artifactId>yitter-idgenerator</artifactId>
+ <version>1.0.6</version>
+ </dependency>
+
+ <dependency>
+ <groupId>redis.clients</groupId>
+ <artifactId>jedis</artifactId>
+ <version>2.9.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>1.6.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.alipay.sdk</groupId>
+ <artifactId>alipay-sdk-java</artifactId>
+ <version>4.8.10.ALL</version>
+ </dependency>
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-api-system</artifactId>
+ <version>3.6.4</version>
+ </dependency>
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-api-user</artifactId>
+ <version>3.6.4</version>
+ </dependency>
+
+ <!-- SpringCloud Alibaba Nacos -->
+ <dependency>
+ <groupId>com.alibaba.cloud</groupId>
+ <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+ </dependency>
+
+ <!-- SpringCloud Alibaba Nacos Config -->
+ <dependency>
+ <groupId>com.alibaba.cloud</groupId>
+ <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+ </dependency>
+
+ <!-- SpringCloud Alibaba Sentinel -->
+ <dependency>
+ <groupId>com.alibaba.cloud</groupId>
+ <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+ </dependency>
+
+ <!-- SpringBoot Actuator -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-actuator</artifactId>
+ </dependency>
+
+ <!-- Swagger UI -->
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-swagger-ui</artifactId>
+ <version>${swagger.fox.version}</version>
+ </dependency>
+
+ <!-- RuoYi Common DataSource -->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common-datasource</artifactId>
+ </dependency>
+
+ <!-- RuoYi Common DataScope -->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common-datascope</artifactId>
+ </dependency>
+
+ <!-- RuoYi Common Log -->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common-log</artifactId>
+ </dependency>
+
+ <!-- RuoYi Common Swagger -->
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common-swagger</artifactId>
+ </dependency>
+
+ <!-- 引入Druid依赖,阿里巴巴所提供的数据源 -->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid-spring-boot-starter</artifactId>
+ <version>${druid.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>fastjson</artifactId>
+ <version>1.2.47</version>
+ </dependency>
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-common-security</artifactId>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${project.artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/RuoyiOrderApplication.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/RuoyiOrderApplication.java
new file mode 100644
index 0000000..d09192d
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/RuoyiOrderApplication.java
@@ -0,0 +1,26 @@
+package com.ruoyi.order;
+
+import com.ruoyi.common.security.annotation.EnableCustomConfig;
+import com.ruoyi.common.security.annotation.EnableRyFeignClients;
+import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * @author HJL
+ */
+@EnableCustomConfig
+@MapperScan({"com.ruoyi.order.mapper"})
+@EnableCustomSwagger2
+@EnableRyFeignClients
+@SpringBootApplication
+@EnableScheduling
+public class RuoyiOrderApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(RuoyiOrderApplication.class, args);
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/MyDateObjectHandler.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/MyDateObjectHandler.java
new file mode 100644
index 0000000..584c50b
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/MyDateObjectHandler.java
@@ -0,0 +1,42 @@
+package com.ruoyi.order.config;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * 自动生成时间
+ *
+ * @author HJL
+ */
+@Component
+public class MyDateObjectHandler implements MetaObjectHandler {
+
+ /**
+ * mybatisPlus新增修改自动插入当前时间
+ *
+ * @author hjl
+ */
+ @Override
+ public void insertFill(MetaObject metaObject) {
+ // 创建时间
+ this.setFieldValByName("createTime", new Date(), metaObject);
+ // 更新时间
+ this.setFieldValByName("updateTime", new Date(), metaObject);
+ // 创建人
+ this.setFieldValByName("createBy", "", metaObject);
+ this.setFieldValByName("updateBy", "", metaObject);
+ // 是否软删除
+ this.setFieldValByName("isDelete", 0, metaObject);
+
+ }
+
+ @Override
+ public void updateFill(MetaObject metaObject) {
+ // 修改时间为当前时间
+ this.setFieldValByName("updateTime", new Date(), metaObject);
+ this.setFieldValByName("updateBy", "", metaObject);
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/MybatisPlusConfig.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..31769df
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/config/MybatisPlusConfig.java
@@ -0,0 +1,43 @@
+package com.ruoyi.order.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author HJL
+ */
+@Configuration
+public class MybatisPlusConfig {
+
+ private final MyDateObjectHandler dataUpdateHandler;
+
+ @Autowired
+ public MybatisPlusConfig(MyDateObjectHandler dataUpdateHandler) {
+ this.dataUpdateHandler = dataUpdateHandler;
+ }
+
+ /**
+ * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题
+ */
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor() {
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+
+ /**
+ * 自动填充功能
+ */
+ @Bean
+ public GlobalConfig globalConfig() {
+ GlobalConfig globalConfig = new GlobalConfig();
+ globalConfig.setMetaObjectHandler(dataUpdateHandler);
+ return globalConfig;
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java
new file mode 100644
index 0000000..06c042a
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java
@@ -0,0 +1,267 @@
+package com.ruoyi.order.controller;
+
+
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.order.entity.ChangeDispatch;
+import com.ruoyi.order.entity.Order;
+import com.ruoyi.order.service.ChangeDispatchService;
+import com.ruoyi.order.service.OrderService;
+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.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 改派管理 前端控制器
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-05-31
+ */
+@RestController
+@RequestMapping("/changeDispatch")
+@Api(tags = {"后台-系统设置-订单改派管理"})
+public class ChangeDispatchController {
+
+ @Resource
+ private ChangeDispatchService changeDispatchService;
+ @Resource
+ private OrderService orderService;
+
+ /**
+ * 订单改派分页列表
+ *
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ */
+ @RequiresPermissions("reassignment_apply")
+ @ApiOperation(value = "订单改派分页查询列表", tags = {"后台-系统设置-订单改派管理"})
+ @GetMapping(value = "/page")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "师傅名称", name = "workerName", dataType = "String"),
+ @ApiImplicitParam(value = "订单编号", name = "orderNumber", dataType = "String"),
+ @ApiImplicitParam(value = "下单用户名称", name = "userName", dataType = "String"),
+ @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
+ })
+ public R<Page<ChangeDispatch>> queryPageList(@RequestParam(value = "workerName", required = false) String workerName,
+ @RequestParam(value = "orderNumber", required = false) String orderNumber,
+ @RequestParam(value = "userName", required = false) String userName,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ LambdaQueryChainWrapper<ChangeDispatch> wrapper = changeDispatchService.lambdaQuery();
+ wrapper = StringUtils.isNotBlank(workerName) ? wrapper.like(ChangeDispatch::getWorkerName, workerName) : wrapper;
+ wrapper = StringUtils.isNotBlank(orderNumber) ? wrapper.like(ChangeDispatch::getOrderNumber, orderNumber) : wrapper;
+ wrapper = StringUtils.isNotBlank(userName) ? wrapper.like(ChangeDispatch::getUserName, userName) : wrapper;
+ return R.ok(wrapper.eq(ChangeDispatch::getIsDelete, 0)
+ .orderByDesc(ChangeDispatch::getCreateTime).page(Page.of(pageNum, pageSize)));
+ }
+
+ /**
+ * 订单改派详情
+ *
+ * @param changeDispatch 订单改派信息
+ */
+ @ApiOperation(value = "新增订单改派", tags = {"后台-系统设置-订单改派管理"})
+ @PostMapping(value = "/save")
+ public R<Boolean> save(@RequestBody ChangeDispatch changeDispatch) {
+ return R.ok(changeDispatchService.save(changeDispatch));
+ }
+
+ /**
+ * 订单改派详情
+ *
+ * @param changeDispatch 订单改派信息
+ */
+ @ApiOperation(value = "订单改派新逻辑", tags = {"后台-系统设置-订单改派管理"})
+ @PostMapping(value = "/saveRecord")
+ public R<Boolean> saveRecord(@RequestBody ChangeDispatch changeDispatch) {
+ String orderId = changeDispatch.getOrderId();
+ ChangeDispatch record = changeDispatchService.lambdaQuery()
+ .eq(ChangeDispatch::getOrderId, orderId)
+ .orderByDesc(ChangeDispatch::getCreateTime)
+ .last("limit 1").one();
+ boolean result = true;
+ if (null == record || record.getState() == 1 || record.getState() == 2) {
+ result = changeDispatchService.save(changeDispatch);
+ } else {
+ changeDispatchService.lambdaUpdate()
+ .set(ChangeDispatch::getState, Constants.ONE)
+ .eq(ChangeDispatch::getId, record.getId()).update();
+ }
+ return R.ok(result);
+ }
+
+ /**
+ * 订单改派 -远程调用
+ *
+ * @param changeDispatch 订单改派信息
+ */
+ @ApiOperation(value = "新增订单改派", tags = {"后台-系统设置-订单改派管理"})
+ @PostMapping(value = "/changeDispatchSave")
+ public R<Boolean> changeDispatchSave(@RequestBody ChangeDispatch changeDispatch) {
+ return R.ok(changeDispatchService.save(changeDispatch));
+ }
+
+ /**
+ * 订单改派详情
+ *
+ * @param id 订单改派id
+ */
+ @ApiOperation(value = "订单改派详情", tags = {"后台-系统设置-订单改派管理"})
+ @GetMapping(value = "/detail")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "订单改派id", name = "id", dataType = "Integer", required = true)
+ })
+ public R<ChangeDispatch> detail(@RequestParam("id") String id) {
+ return R.ok(changeDispatchService.lambdaQuery().eq(ChangeDispatch::getId, id)
+ .eq(ChangeDispatch::getIsDelete, 0).one());
+ }
+
+ /**
+ * 订单改派详情 远程调用
+ *
+ * @param id 订单id
+ */
+ @GetMapping(value = "/one")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "订单改派id", name = "id", dataType = "Integer", required = true)
+ })
+ public R<ChangeDispatch> one(@RequestParam("id") Integer id) {
+ ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery()
+ .eq(ChangeDispatch::getOrderId, id)
+ .eq(ChangeDispatch::getState, Constants.ZERO)
+ .one();
+ return R.ok(changeDispatch);
+ }
+
+ /**
+ * 订单改派详情 远程调用
+ *
+ * @param id 订单id
+ */
+ @GetMapping(value = "/changeDispatchOne")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "订单改派id", name = "id", dataType = "String", required = true)
+ })
+ public R<ChangeDispatch> changeDispatchOne(@RequestParam("id") String id) {
+ ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery()
+ .eq(ChangeDispatch::getOrderId, id)
+ .eq(ChangeDispatch::getState, Constants.ZERO)
+ .orderByDesc(ChangeDispatch::getCreateTime)
+ .last("limit 1")
+ .one();
+ return R.ok(changeDispatch);
+ }
+
+ /**
+ * 拒绝订单改派申请
+ *
+ * @param id 订单id
+ */
+ @GetMapping(value = "/refuseChangeDispatch")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "订单改派id", name = "id", dataType = "String", required = true)
+ })
+ public R<Boolean> refuseChangeDispatch(@RequestParam("id") String id) {
+ ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery()
+ .eq(ChangeDispatch::getId, id)
+ .eq(ChangeDispatch::getIsDelete, Constants.ZERO)
+ .one();
+ if (null == changeDispatch) {
+ throw new GlobalException("改派申请不存在或已删除!");
+ }
+ changeDispatch.setState(Constants.TWO);
+ boolean update = changeDispatchService.updateById(changeDispatch);
+ // 订单重新派给提交申请的师傅
+ Order order = orderService.lambdaQuery()
+ .eq(Order::getId, changeDispatch.getOrderId())
+ .eq(Order::getIsDelete, 0).one();
+ order.setState(Constants.ONE);
+ return R.ok(update && orderService.updateById(order));
+ }
+
+ /**
+ * 根据id批量删除订单改派
+ *
+ * @param ids 订单改派多条id拼接
+ */
+ @RequiresPermissions("reassignment_apply")
+ @ApiOperation(value = "批量删除订单改派", tags = {"后台-系统设置-订单改派管理"})
+ @GetMapping(value = "/batchDelete")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "多条订单改派id ',' 拼接", name = "ids", dataType = "String", required = true)
+ })
+ public R<String> batchDelete(@RequestParam String ids) {
+ List<String> idList = Arrays.stream(ids.split(",")).collect(Collectors.toList());
+ List<ChangeDispatch> list = changeDispatchService.lambdaQuery().in(ChangeDispatch::getId, idList).list();
+ list.forEach(data -> data.setIsDelete(1));
+ return changeDispatchService.updateBatchById(list) ? R.ok() : R.fail();
+ }
+
+ /**
+ * 订单改派师傅
+ *
+ * @param changeId 改派订单id
+ * @param workerId 师傅id
+ */
+ @RequiresPermissions("reassignment_apply")
+ @ApiOperation(value = "订单改派师傅", tags = {"后台-系统设置-订单改派管理"})
+ @GetMapping(value = "/changeWorker")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "改派订单id", name = "changeId", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "师傅id", name = "workerId", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "师傅姓名", name = "name", dataType = "String", required = true),
+ @ApiImplicitParam(value = "师傅电话", name = "phone", dataType = "String", required = true)
+ })
+ public R<Boolean> changeWorker(@RequestParam("changeId") String changeId, @RequestParam("workerId") Integer workerId,
+ @RequestParam("name") String name, @RequestParam("phone") String phone) {
+ ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery().eq(ChangeDispatch::getId, changeId)
+ .eq(ChangeDispatch::getIsDelete, 0).one();
+ if (null == changeDispatch || Constants.ONE.equals(changeDispatch.getState())) {
+ throw new GlobalException("改派申请不存在或已改派!");
+ }
+ Order order = orderService.lambdaQuery().eq(Order::getId, changeDispatch.getOrderId())
+ .eq(Order::getIsDelete, 0).one();
+ if (null == order) {
+ throw new GlobalException("订单不存在!");
+ }
+ // 原订单状态改为 1:待上门,已选择师傅
+ order.setState(Constants.ONE);
+ // 更改订单信息为再投单
+ boolean orderUpdate = orderService.lambdaUpdate().set(Order::getIsReinvest, Constants.ONE)
+ .set(Order::getAcceptTime, new Date())
+ .set(Order::getArriveTime, null)
+ .set(Order::getCompleteTime, null)
+ .eq(Order::getId, order.getId()).update();
+ // 生成新订单信息
+// Order newOrder = new Order();
+// BeanUtils.copyProperties(order, newOrder);
+// newOrder.setId(null);
+// newOrder.setServerId(workerId);
+// newOrder.setServerName(name);
+// newOrder.setServerPhone(phone);
+// newOrder.setState(Constants.ONE);
+// // 构建新订单
+// boolean save = orderService.save(newOrder);
+ // 改派信息
+ boolean update = changeDispatchService.lambdaUpdate().set(ChangeDispatch::getState, 1)
+ .eq(ChangeDispatch::getId, changeId).eq(ChangeDispatch::getIsDelete, 0).update();
+ return R.ok(orderUpdate && update);
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/EvaluateController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/EvaluateController.java
new file mode 100644
index 0000000..e3921fc
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/EvaluateController.java
@@ -0,0 +1,189 @@
+package com.ruoyi.order.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.order.entity.Evaluate;
+import com.ruoyi.order.entity.Order;
+import com.ruoyi.order.request.OrderEvaluateSubmitRequest;
+import com.ruoyi.order.service.EvaluateService;
+import com.ruoyi.order.service.OrderService;
+import com.ruoyi.order.vo.EvaluatePageVO;
+import com.ruoyi.order.vo.OrderEvaluateVO;
+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.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 用户评价表 前端控制器
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-05-29
+ */
+@RestController
+@RequestMapping("/evaluate")
+@Api(tags = {"后台-系统设置-订单评价管理"})
+public class EvaluateController {
+
+ @Resource
+ private EvaluateService evaluateService;
+ @Resource
+ private OrderService orderService;
+
+ /**
+ * 订单评价分页列表
+ *
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ */
+ @RequiresPermissions("order_evaluate")
+ @ApiOperation(value = "订单评价分页查询列表", tags = {"后台"})
+ @GetMapping(value = "/page")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "评价用户", name = "userNo", dataType = "String"),
+ @ApiImplicitParam(value = "订单编号", name = "orderNumber", dataType = "String"),
+ @ApiImplicitParam(value = "师傅姓名", name = "workerName", dataType = "String"),
+ @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
+ })
+ public R<Page<EvaluatePageVO>> queryPageList(@RequestParam(value = "userNo", required = false) String userNo,
+ @RequestParam(value = "orderNumber", required = false) String orderNumber,
+ @RequestParam(value = "workerName", required = false) String workerName,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return R.ok(evaluateService.queryPageList(userNo, orderNumber, workerName, Page.of(pageNum, pageSize)));
+ }
+
+ /**
+ * 订单评价详情
+ *
+ * @param id 订单评价id
+ */
+ @RequiresPermissions("order_evaluate")
+ @ApiOperation(value = "订单评价详情", tags = {"后台"})
+ @GetMapping(value = "/detail")
+ public R<Evaluate> detail(@RequestParam("id") Integer id) {
+ return R.ok(evaluateService.lambdaQuery()
+ .eq(Evaluate::getId, id)
+ .eq(Evaluate::getIsDelete, 0).one());
+ }
+
+ /**
+ * 根据id批量删除订单评价
+ *
+ * @param ids 订单评价多条id拼接
+ */
+ @RequiresPermissions("order_evaluate")
+ @ApiOperation(value = "批量删除订单评价", tags = {"后台-系统设置-订单评价管理"})
+ @GetMapping(value = "/batchDelete")
+ public R<String> batchDelete(@RequestParam("ids") String ids) {
+ List<String> idList = Arrays.stream(ids.split(",")).collect(Collectors.toList());
+ List<Evaluate> list = evaluateService.lambdaQuery().in(Evaluate::getId, idList).list();
+ list.forEach(data -> data.setIsDelete(1));
+ List<String> orderIds = list.stream().map(Evaluate::getOrderId).collect(Collectors.toList());
+ if (!orderIds.isEmpty()) {
+ orderService.lambdaUpdate()
+ .set(Order::getIsEvaluate, Constants.ZERO)
+ .in(Order::getId, orderIds).update();
+ }
+ return evaluateService.updateBatchById(list) ? R.ok() : R.fail();
+ }
+
+ /**
+ * 用户所关联评价记录分页列表
+ *
+ * @param userId 用户id
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ * @return 分页列表
+ */
+ @ApiOperation(value = "用户详情-评价记录分页列表", tags = {"后台-用户管理-用户列表"})
+ @GetMapping(value = "/evaluateList")
+ public R<Page<EvaluatePageVO>> evaluateList(@RequestParam(value = "userId", required = false) Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return R.ok(evaluateService.evaluateList(userId, Page.of(pageNum, pageSize)));
+ }
+
+ /**
+ * 根据师傅id获取评价列表
+ *
+ * @param workerId 师傅id
+ */
+ @ApiOperation(value = "根据师傅id获取评价列表", tags = {"后台-系统设置-订单评价管理"})
+ @GetMapping(value = "/evaluateByWorkerId")
+ public R<List<Evaluate>> evaluateByWorkerId(@RequestParam("workerId") Integer workerId) {
+ List<Evaluate> evaluateList = evaluateService.lambdaQuery().eq(Evaluate::getWorkerId, workerId)
+ .eq(Evaluate::getIsDelete, 0).list();
+ return R.ok(evaluateList);
+ }
+
+ /**
+ * 根据订单id获取评价列表
+ *
+ * @param orderId 订单id
+ */
+ @ApiOperation(value = "根据订单id获取评价列表", tags = {"后台-系统设置-订单评价管理"})
+ @GetMapping(value = "/oneByOrderId")
+ public R<Evaluate> oneByOrderId(@RequestParam("orderId") String orderId) {
+ return R.ok(evaluateService.lambdaQuery().eq(Evaluate::getOrderId, orderId)
+ .eq(Evaluate::getIsDelete, 0).one());
+ }
+
+ /**
+ * 订单评价列表
+ *
+ * @param userId 用户id
+ */
+ @ApiOperation(value = "订单评价列表", tags = {"用户端"})
+ @GetMapping(value = "/evaluateListByUser")
+ public R<Page<OrderEvaluateVO>> evaluateListByUser(@RequestParam("userId") Integer userId,
+ @RequestParam("state") Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return R.ok(evaluateService.evaluateListByUser(userId, state, Page.of(pageNum, pageSize)));
+ }
+
+ /**
+ * 提交评价
+ *
+ * @param request 评价信息
+ */
+ @ApiOperation(value = "提交评价", tags = {"用户端"})
+ @PostMapping(value = "/evaluateSave")
+ public R<Boolean> evaluateSave(@RequestBody OrderEvaluateSubmitRequest request) {
+ String orderId = request.getOrderId();
+ String content = request.getContent();
+ Double starRating = request.getStarRating();
+ String serveNo = request.getServeNo();
+ Integer userId = request.getUserId();
+ Order order = orderService.lambdaQuery()
+ .eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
+ if (null == order) {
+ throw new GlobalException("订单不存在或已删除!");
+ }
+ order.setIsEvaluate(Constants.ONE);
+ orderService.updateById(order);
+ Evaluate evaluate = new Evaluate();
+ evaluate.setUserId(userId);
+ evaluate.setOrderId(orderId);
+ evaluate.setContent(content);
+ evaluate.setWorkerId(order.getServerId());
+ evaluate.setStarRating(starRating);
+ evaluate.setServeNo(serveNo);
+ return R.ok(evaluateService.save(evaluate));
+ }
+
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
new file mode 100644
index 0000000..c332288
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -0,0 +1,575 @@
+package com.ruoyi.order.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.common.core.vo.Path;
+import com.ruoyi.order.entity.*;
+import com.ruoyi.order.request.OrderRequest;
+import com.ruoyi.order.request.OrderSubmitRequest;
+import com.ruoyi.order.request.UserOrderRequest;
+import com.ruoyi.order.service.*;
+import com.ruoyi.order.vo.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 订单管理 前端控制器
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-05-29
+ */
+@RestController
+@RequestMapping("/order")
+@Api(tags = {"后台-订单管理"})
+public class OrderController {
+
+ @Resource
+ private OrderService orderService;
+ @Resource
+ private ServeRecordService serveRecordService;
+ @Resource
+ private EvaluateService evaluateService;
+ @Resource
+ private ServeCoordinateService serveCoordinateService;
+ @Resource
+ private ChangeDispatchService changeDispatchService;
+
+ /**
+ * 根据前台用户id查询所有订单信息
+ *
+ * @param phone 手机号
+ */
+ @ApiOperation(value = "查询用户所有订单", tags = {"后台-订单管理"})
+ @GetMapping(value = "/queryList")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "手机号", name = "phone", dataType = "String", required = true)
+ })
+ public R<List<Order>> queryList(@RequestParam("phone") String phone) {
+ return R.ok(orderService.lambdaQuery().eq(Order::getReservationPhone, phone)
+ .eq(Order::getIsDelete, 0).list());
+ }
+
+ /**
+ * 订单列表
+ *
+ * @param orderQueryRequest 订单列表查询参数
+ */
+ @ApiOperation(value = "订单列表-分页", tags = {"后台-订单管理"})
+ @PostMapping(value = "/queryPage")
+ public R<Page<Order>> queryPage(@RequestBody OrderQueryRequest orderQueryRequest) {
+ return R.ok(orderService.queryPage(orderQueryRequest));
+ }
+
+ /**
+ * 订单列表
+ */
+ @ApiOperation(value = "订单列表-各订单数量统计", tags = {"后台-订单管理"})
+ @PostMapping(value = "/orderPageCount")
+ public R<OrderPageCountVO> orderPageCount(@RequestBody OrderQueryRequest orderQueryRequest) {
+ return R.ok(orderService.orderPageCount(orderQueryRequest));
+ }
+
+ /**
+ * 更改订单状态
+ */
+ @ApiOperation(value = "订单列表-更改订单状态", tags = {"后台-订单管理"})
+ @PostMapping(value = "/updateState")
+ public R<Boolean> updateState(@RequestParam("orderId") String orderId,
+ @RequestParam("state") Integer state) {
+ return R.ok(orderService.lambdaUpdate()
+ .eq(Order::getId, orderId).set(Order::getState, state).update());
+ }
+
+ /**
+ * 更改订单提现状态
+ */
+ @ApiOperation(value = "订单列表-更改订单提现状态", tags = {"后台-订单管理"})
+ @PostMapping(value = "/updateWithdrawalState")
+ public R<Boolean> updateWithdrawalState(@RequestParam("orderId") String orderId,
+ @RequestParam("state") Integer state) {
+ return R.ok(orderService.lambdaUpdate()
+ .eq(Order::getId, orderId).set(Order::getIsWithdrawal, state).update());
+ }
+
+ /**
+ * 站点详情
+ *
+ * @param id 站点id
+ */
+ @ApiOperation(value = "订单列表-订单详情", tags = {"后台-订单管理"})
+ @GetMapping(value = "/detailByExchangeId")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "改派申请id", name = "id", dataType = "Integer", required = true)
+ })
+ public R<Order> detailByExchangeId(@RequestParam("id") String id) {
+ ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery()
+ .eq(ChangeDispatch::getOrderId, id)
+ .eq(ChangeDispatch::getIsDelete, 0).one();
+ if (null == changeDispatch) {
+ throw new GlobalException("改派申请信息不存在!");
+ }
+ return R.ok(orderService.lambdaQuery()
+ .eq(Order::getId, changeDispatch.getOrderId()).eq(Order::getIsDelete, 0).one());
+ }
+
+ /**
+ * 站点详情
+ *
+ * @param orderId 订单id
+ * @param prizeName 奖品名称
+ */
+ @ApiOperation(value = "补充订单津贴金额", tags = {"后台-订单管理"})
+ @GetMapping(value = "/supplementAllowance")
+ public R<Boolean> supplementAllowance(@RequestParam("orderId") String orderId,
+ @RequestParam("prizeName") String prizeName) {
+ BigDecimal bigDecimal;
+ try {
+ bigDecimal = new BigDecimal(prizeName);
+ } catch (Exception e) {
+ bigDecimal = BigDecimal.ZERO;
+ }
+ return R.ok(orderService.lambdaUpdate()
+ .eq(Order::getId, orderId).set(Order::getSubsidy, bigDecimal).update());
+ }
+
+ /**
+ * 更改订单状态
+ *
+ * @param orderId 订单id
+ * @param state 状态
+ */
+ @ApiOperation(value = "更改订单状态", tags = {"后台-订单管理"})
+ @GetMapping(value = "/changeOrderState")
+ public R<Boolean> changeOrderState(@RequestParam("orderId") String orderId, @RequestParam("state") Integer state) {
+ return R.ok(orderService.lambdaUpdate()
+ .eq(Order::getId, orderId).eq(Order::getIsDelete, 0)
+ .set(Order::getState, state).update());
+ }
+
+ /**
+ * 站点详情
+ *
+ * @param id 站点id
+ */
+ @ApiOperation(value = "订单列表-订单详情", tags = {"后台-订单管理"})
+ @GetMapping(value = "/detail")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "站点id", name = "id", dataType = "String", required = true)
+ })
+ public R<Order> detail(@RequestParam("id") String id) {
+ return R.ok(orderService.lambdaQuery()
+ .eq(Order::getId, id).eq(Order::getIsDelete, 0).one());
+ }
+
+ /**
+ * 申请改派审核通过后生成新订单
+ *
+ * @param order 订单信息
+ */
+ @GetMapping(value = "/generateNewOrder")
+ public R<Boolean> generateNewOrder(@RequestBody Order order) {
+ return R.ok(orderService.save(order));
+ }
+
+ /**
+ * 更改订单信息
+ *
+ * @param type 1:订单派单;2:订单改派
+ */
+ @GetMapping(value = "/exchangeOrder")
+ public R<Order> exchangeOrder(@RequestParam("type") Integer type, @RequestParam("orderId") String orderId,
+ @RequestParam("workerId") Integer workerId, @RequestParam("name") String name,
+ @RequestParam("phone") String phone) {
+ Order order = orderService.getById(orderId);
+ // 订单派单
+ if (Constants.ONE.equals(type)) {
+ order.setServerId(workerId);
+ order.setServerName(name);
+ order.setServerPhone(phone);
+ order.setAcceptTime(new Date());
+ order.setState(Constants.ONE);
+ orderService.updateById(order);
+ } else if (Constants.TWO.equals(type)) {
+ order.setServerId(workerId);
+ // 更新接单时间
+ order.setAcceptTime(new Date());
+ order.setServerName(name);
+ order.setServerPhone(phone);
+ orderService.updateById(order);
+ }
+ return R.ok(order);
+ }
+
+ /**
+ * 新增订单
+ * 后台订单为指定订单,默认为待上门状态
+ *
+ * @param orderRequest 订单信息
+ */
+ @ApiOperation(value = "订单列表-新增订单", tags = {"后台-订单管理"})
+ @PostMapping(value = "/save")
+ public R<Boolean> save(@RequestBody OrderRequest orderRequest) {
+ Order order = new Order();
+ order.setCity(orderRequest.getCity());
+ order.setOrderNumber(orderRequest.getOrderNumber());
+ order.setUserId(orderRequest.getUserId());
+ order.setSiteId(orderRequest.getSiteId());
+ order.setSiteName(orderRequest.getSiteName());
+ order.setServeId(orderRequest.getServeId());
+ order.setServeName(orderRequest.getServeName());
+ order.setSiteName(orderRequest.getSiteName());
+ // 预约信息
+ order.setReservationName(orderRequest.getReservationName());
+ order.setReservationPhone(orderRequest.getReservationPhone());
+ order.setReservationAddress(orderRequest.getReservationAddress());
+ order.setTime(orderRequest.getTime());
+ order.setAcceptTime(orderRequest.getAcceptTime());
+ // 师傅信息
+ order.setServerId(orderRequest.getServerId());
+ order.setServerName(orderRequest.getServerName());
+ order.setServerPhone(orderRequest.getServerPhone());
+ order.setReservationRemark(orderRequest.getReservationRemark());
+ order.setState(orderRequest.getState());
+ order.setArriveTime(orderRequest.getArriveTime());
+ order.setType(orderRequest.getType());
+ order.setLongitude(orderRequest.getLongitude());
+ order.setLatitude(orderRequest.getLatitude());
+ order.setCompleteTime(orderRequest.getCompleteTime());
+ order.setSubsidy(orderRequest.getSubsidy());
+ order.setIsWithdrawal(orderRequest.getIsWithdrawal());
+ order.setAddress(orderRequest.getAddress());
+ order.setCancelReason(orderRequest.getCancelReason());
+ order.setApplyReason(orderRequest.getApplyReason());
+ order.setIsEvaluate(Constants.ZERO);
+ return R.ok(orderService.save(order));
+ }
+
+
+ /**
+ * 根据id批量删除站点
+ *
+ * @param ids 站点多条id拼接
+ */
+ @ApiOperation(value = "订单列表-批量删除订单", tags = {"后台-订单管理"})
+ @GetMapping(value = "/batchDelete")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "多个id ',' 拼接", name = "ids", dataType = "String", required = true)
+ })
+ public R<Boolean> batchDelete(@RequestParam("ids") String ids) {
+ List<String> idList = Arrays.stream(ids.split(",")).collect(Collectors.toList());
+ List<Order> list = orderService.lambdaQuery().in(Order::getId, idList).list();
+ list.forEach(data -> data.setIsDelete(1));
+ return R.ok(orderService.updateBatchById(list));
+ }
+
+ /**
+ * 订单列表-excel导出
+ *
+ * @param orderQueryRequest 筛选参数
+ */
+ @ApiOperation(value = "订单列表-excel导出", tags = {"后台-订单管理"})
+ @PostMapping(value = "/excelExport")
+ public R<List<Order>> excelExport(@RequestBody OrderQueryRequest orderQueryRequest) {
+ return R.ok(orderService.excelExport(orderQueryRequest));
+ }
+
+ /**
+ * 订单列表-excel导出
+ *
+ * @param name 师傅姓名
+ * @param phone 师傅电话
+ */
+ @ApiOperation(value = "订单统计", tags = {"后台-订单管理"})
+ @GetMapping(value = "/orderCount")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "师傅姓名", name = "name", dataType = "String"),
+ @ApiImplicitParam(value = "师傅电话", name = "phone", dataType = "String"),
+ @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
+ })
+ public R<Page<OrderCountVO>> orderCount(@RequestParam(value = "name", required = false) String name,
+ @RequestParam(value = "phone", required = false) String phone,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return R.ok(orderService.orderCount(name, phone, Page.of(pageNum, pageSize)));
+ }
+
+ /**
+ * 回收订单统计
+ *
+ * @param orderCount 查询所需参数
+ */
+ @ApiOperation(value = "后台-回收订单统计", tags = {"后台-首页"})
+ @PostMapping(value = "/orderCountHome")
+ public R<OrderResultVO> orderCountHome(@RequestBody OrderCountRequest orderCount) {
+ return R.ok(orderService.orderCountHome(orderCount));
+ }
+
+ /**
+ * 用户所关联订单记录分页列表
+ *
+ * @param userId 手机号
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ * @return 分页列表
+ */
+ @ApiOperation(value = "用户详情-订单记录分页列表", tags = {"后台-用户管理-用户列表"})
+ @GetMapping(value = "/orderList")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "用户id", name = "userId", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
+ })
+ public R<IPage<Order>> orderList(@RequestParam("userId") Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return R.ok(orderService.lambdaQuery().eq(Order::getUserId, userId)
+ .eq(Order::getIsDelete, 0).page(Page.of(pageNum, pageSize)));
+ }
+
+ /**
+ * 根据类型获取交易额
+ *
+ * @param moneyQueryRequest 筛选参数
+ * @return 交易额
+ */
+ @ApiOperation(value = "根据类型获取交易额", tags = {"后台-用户管理-用户列表"})
+ @PostMapping(value = "/tradeMoney")
+ public R<BigDecimal> tradeMoney(@RequestBody MoneyQueryRequest moneyQueryRequest) {
+ return R.ok(orderService.tradeMoney(moneyQueryRequest));
+ }
+
+ /**
+ * 师傅端-订单列表
+ *
+ * @param userId 用户端
+ * @param state 订单状态
+ * @return 交易额
+ */
+ @ApiOperation(value = "师傅端-订单列表", tags = {"师傅端"})
+ @GetMapping(value = "/orderListWorker")
+ public R<Page<Order>> orderListWorker(@RequestParam("userId") Integer userId, @RequestParam("state") Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return R.ok(orderService.orderListWorker(userId, state, pageNum, pageSize));
+ }
+
+ /**
+ * 师傅端-根据师傅id获取订单数量
+ *
+ * @param workerIds 师傅id集合
+ * @return 接单列表
+ */
+ @ApiOperation(value = "根据师傅id获取订单数量", tags = {"师傅端"})
+ @PostMapping(value = "/workerOrderRank")
+ public R<List<WorkerOrderRankVO>> workerOrderRank(@RequestBody List<Integer> workerIds) {
+ return R.ok(orderService.workerOrderRank(workerIds));
+ }
+
+ /**
+ * 师傅端-订单路线导航
+ *
+ * @param orderId 订单id
+ */
+ @ApiOperation(value = "订单路线导航", tags = {"师傅端"})
+ @GetMapping(value = "/orderNavigation")
+ public R<Path> orderNavigation(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId,
+ @RequestParam("longitude") String longitude, @RequestParam("latitude") String latitude) {
+ Order order = orderService.lambdaQuery().eq(Order::getId, orderId)
+ .eq(Order::getServerId, workerId)
+ .eq(Order::getIsDelete, 0).one();
+ if (null == order) {
+ throw new GlobalException("请确认当前订单所派单师傅是否是您!");
+ }
+ // 用户下单经纬度
+ Double userLongitude = order.getLongitude();
+ Double userLatitude = order.getLatitude();
+ String userPosition = userLongitude + "," + userLatitude;
+ // 师傅当前位置 经纬度
+ String workerPosition = longitude + "," + latitude;
+ return R.ok(orderService.orderNavigation(userPosition, workerPosition));
+ }
+
+ /**
+ * 师傅端-已到达预约地点
+ *
+ * @param orderId 订单id
+ */
+ @ApiOperation(value = "已到达预约地点", tags = {"师傅端"})
+ @GetMapping(value = "/reachPosition")
+ @Transactional(rollbackFor = Exception.class)
+ public R<Boolean> reachPosition(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId) {
+ Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getServerId, workerId)
+ .eq(Order::getIsDelete, 0).one();
+ if (null == order) {
+ throw new GlobalException("请确认当前订单所派单师傅是否是您!");
+ }
+ // 待完工状态
+ order.setState(Constants.TWO);
+ order.setArriveTime(new Date());
+ return R.ok(orderService.updateById(order));
+ }
+
+ /**
+ * 师傅端-订单详情
+ *
+ * @param orderId 订单id
+ */
+ @ApiOperation(value = "订单详情", tags = {"师傅端-订单列表"})
+ @GetMapping(value = "/orderDetail")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true)
+ })
+ public R<OrderDetailVO> orderDetail(@RequestParam("orderId") String orderId) {
+ // 订单信息
+ Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
+ // 获取回收服务封面
+
+ // 服务信息(服务备注、上门时间、完成时间、完成所拍现场照片)
+ ServeRecord serveRecord = serveRecordService.lambdaQuery().eq(ServeRecord::getOrderId, orderId)
+ .eq(ServeRecord::getIsDelete, 0).one();
+ // 评价信息
+ Evaluate evaluate = evaluateService.lambdaQuery().eq(Evaluate::getOrderId, orderId)
+ .eq(Evaluate::getIsDelete, 0).one();
+ return R.ok(new OrderDetailVO(order, serveRecord, evaluate));
+ }
+
+ /**
+ * 师傅端-订单详情
+ *
+ * @param orderSubmitRequest 提交订单信息
+ */
+ @ApiOperation(value = "订单完工-提交订单", tags = {"师傅端-订单列表"})
+ @PostMapping(value = "/orderSubmit")
+ @Transactional(rollbackFor = Exception.class)
+ public R<Boolean> orderSubmit(@RequestBody OrderSubmitRequest orderSubmitRequest) {
+ // 订单信息
+ Order order = orderService.lambdaQuery().eq(Order::getId, orderSubmitRequest.getOrderId())
+ .eq(Order::getIsDelete, 0).one();
+ // 订单不存在,或订单状态异常(订单状态为2才可提交)
+ if (null == order || !Constants.TWO.equals(order.getState())) {
+ throw new GlobalException("订单不存在或订单状态异常!");
+ }
+ order.setCompleteTime(new Date());
+ order.setState(Constants.THREE);
+ boolean update = orderService.updateById(order);
+ // 服务记录
+ ServeRecord serveRecord = new ServeRecord();
+ serveRecord.setOrderId(order.getId());
+ serveRecord.setPhoto(String.join(",", orderSubmitRequest.getPhoto()));
+ boolean save = serveRecordService.save(serveRecord);
+ return R.ok(update && save);
+ }
+
+ /**
+ * 师傅端-定时调度记录师傅所走路线经纬度
+ *
+ * @param orderId 订单id
+ * @param longitude 经度
+ * @param latitude 纬度
+ */
+ @ApiOperation(value = "订单进行-记录路线经纬度", tags = {"师傅端"})
+ @GetMapping(value = "/coordinate")
+ @Transactional(rollbackFor = Exception.class)
+ public R<Boolean> coordinate(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId,
+ @RequestParam("longitude") Double longitude, @RequestParam("latitude") Double latitude) {
+ ServeCoordinate serveCoordinate = new ServeCoordinate();
+ serveCoordinate.setWorkerId(workerId);
+ serveCoordinate.setOrderId(orderId);
+ serveCoordinate.setCoordinate(longitude + "," + latitude);
+ serveCoordinate.setLongitude(BigDecimal.valueOf(longitude));
+ serveCoordinate.setLatitude(BigDecimal.valueOf(latitude));
+ return R.ok(serveCoordinateService.save(serveCoordinate));
+ }
+
+ /**
+ * 师傅端-代办列表
+ *
+ * @param workerId 师傅id
+ */
+ @ApiOperation(value = "代办列表", tags = {"师傅端"})
+ @GetMapping(value = "/orderNotHandle")
+ public R<List<Order>> orderNotHandle(@RequestParam("workerId") Integer workerId) {
+ QueryWrapper<Order> wrapper = new QueryWrapper<>();
+ wrapper.eq("server_id", workerId)
+ .in("state", 1, 2)
+ .eq("is_delete", Constants.ZERO)
+ .orderByAsc("CASE WHEN topSort IS NULL THEN 1 ELSE 0 END")
+ .orderByAsc("topSort");
+ return R.ok(orderService.list(wrapper));
+ }
+
+ /**
+ * 师傅端-订单代办列表
+ */
+ @ApiOperation(value = "订单置顶", tags = {"师傅端-首页"})
+ @GetMapping(value = "/orderTop")
+ public R<Boolean> orderTop(@RequestParam("orderId") String orderId, @RequestParam("workerId") Integer workerId) {
+ return R.ok(orderService.orderTop(orderId, workerId));
+ }
+
+ /**
+ * 师傅端-订单状态统计数量
+ */
+ @ApiOperation(value = "订单状态统计数量", tags = {"师傅端-首页"})
+ @GetMapping(value = "/orderStateCount")
+ public R<WorkerOrderCountVO> orderStateCount(@RequestParam("workerId") Integer workerId) {
+ return R.ok(orderService.orderStateCount(workerId));
+ }
+
+ /************************************** 用户端远程调用接口 ***************************************/
+
+ /**
+ * 用户端-订单状态统计数量
+ */
+ @ApiOperation(value = "订单状态统计数量", tags = {"用户端"})
+ @GetMapping(value = "/orderListByUser")
+ public R<Page<Order>> orderListByUser(@RequestParam("userId") Integer userId,
+ @RequestParam("state") Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ LambdaQueryChainWrapper<Order> wrapper = orderService.lambdaQuery()
+ .eq(Order::getIsDelete, 0).eq(Order::getUserId, userId);
+ if (state != -1) {
+ wrapper.eq(Order::getState, state);
+ }
+ return R.ok(wrapper.orderByDesc(Order::getCreateTime).page(Page.of(pageNum, pageSize)));
+ }
+
+ /**
+ * 用户端-生成预订单信息
+ */
+ @ApiOperation(value = "生成预订单信息", tags = {"用户端"})
+ @PostMapping(value = "/orderEstimate")
+ public R<String> orderEstimate(@RequestBody UserOrderRequest userOrderRequest) {
+ return R.ok(orderService.orderEstimate(userOrderRequest), "");
+ }
+
+ /**
+ * 用户端-用户下单
+ */
+ @ApiOperation(value = "下单", tags = {"用户端"})
+ @PostMapping(value = "/placeOrder")
+ public R<Boolean> placeOrder(@RequestBody UserOrderRequest userOrderRequest) {
+ return R.ok(orderService.placeOrder(userOrderRequest));
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ServeCoordinateController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ServeCoordinateController.java
new file mode 100644
index 0000000..1e5b11f
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ServeCoordinateController.java
@@ -0,0 +1,49 @@
+package com.ruoyi.order.controller;
+
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.entity.ServeCoordinate;
+import com.ruoyi.order.service.ServeCoordinateService;
+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;
+
+/**
+ * <p>
+ * 用户评价表 前端控制器
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-05-29
+ */
+@RestController
+@RequestMapping("/serveCoordinate")
+@Api(tags = {"后台-系统设置-订单评价管理"})
+public class ServeCoordinateController {
+
+ @Resource
+ private ServeCoordinateService serveCoordinateService;
+
+ /**
+ * 根据订单id和师傅id获取订单路线轨迹
+ *
+ * @param orderId 订单id
+ */
+ @ApiOperation(value = "根据订单id和师傅id获取订单路线轨迹", tags = {"后台-系统设置-订单评价管理"})
+ @GetMapping(value = "/serveCoordinateList")
+ public R<List<ServeCoordinate>> serveCoordinateList(@RequestParam("orderId") String orderId,
+ @RequestParam("workerId") String workerId) {
+ return R.ok(serveCoordinateService.lambdaQuery()
+ .eq(ServeCoordinate::getWorkerId, workerId)
+ .eq(ServeCoordinate::getIsDelete, 0)
+ .eq(ServeCoordinate::getOrderId, orderId)
+ .orderByDesc(ServeCoordinate::getCreateTime).list());
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ServeRecordController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ServeRecordController.java
new file mode 100644
index 0000000..a57c816
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ServeRecordController.java
@@ -0,0 +1,44 @@
+package com.ruoyi.order.controller;
+
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.entity.ServeRecord;
+import com.ruoyi.order.service.ServeRecordService;
+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;
+
+/**
+ * <p>
+ * 用户评价表 前端控制器
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-05-29
+ */
+@RestController
+@RequestMapping("/serveRecord")
+@Api(tags = {"后台-系统设置-订单评价管理"})
+public class ServeRecordController {
+
+ @Resource
+ private ServeRecordService serveRecordService;
+
+ /**
+ * 根据订单id获取服务记录
+ *
+ * @param orderId 订单id
+ */
+ @ApiOperation(value = "根据订单id获取服务记录", tags = {"后台-系统设置-订单评价管理"})
+ @GetMapping(value = "/serveRecordByOrderId")
+ public R<ServeRecord> serveRecordByOrderId(@RequestParam("orderId") String orderId) {
+ return R.ok(serveRecordService.lambdaQuery().eq(ServeRecord::getOrderId, orderId)
+ .eq(ServeRecord::getIsDelete, 0).one());
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/WithdrawController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/WithdrawController.java
new file mode 100644
index 0000000..8221b9b
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/WithdrawController.java
@@ -0,0 +1,322 @@
+package com.ruoyi.order.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.order.entity.Order;
+import com.ruoyi.order.entity.ServeRecord;
+import com.ruoyi.order.entity.Withdraw;
+import com.ruoyi.order.entity.WithdrawalSetting;
+import com.ruoyi.order.request.WithdrawExportRequest;
+import com.ruoyi.order.service.OrderService;
+import com.ruoyi.order.service.ServeRecordService;
+import com.ruoyi.order.service.WithdrawService;
+import com.ruoyi.order.vo.MoneyQueryRequest;
+import com.ruoyi.order.vo.UserWithdrawRecordVO;
+import com.ruoyi.order.vo.WithdrawDetailVO;
+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.math.BigDecimal;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 用户提现申请记录表 前端控制器
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-09
+ */
+@RestController
+@RequestMapping("/withdraw")
+public class WithdrawController {
+
+ @Resource
+ private WithdrawService withdrawService;
+ @Resource
+ private OrderService orderService;
+ @Resource
+ private ServeRecordService serveRecordService;
+
+ /**
+ * 用户所关联提现记录分页列表
+ *
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ * @return 分页列表
+ */
+ @ApiOperation(value = "用户提现管理-提现记录分页列表", tags = {"后台-用户管理-提现列表"})
+ @GetMapping(value = "/withdrawPage")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "用户昵称", name = "nickname", dataType = "String"),
+ @ApiImplicitParam(value = "手机号", name = "userPhone", dataType = "String"),
+ @ApiImplicitParam(value = "申请时间", name = "applyForTime", dataType = "String"),
+ @ApiImplicitParam(value = "审核状态(0待审核;1已通过;2已驳回)", name = "state", dataType = "Integer"),
+ @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
+ })
+ public R<Page<UserWithdrawRecordVO>> withdrawPage(@RequestParam(value = "nickname", required = false) String nickname,
+ @RequestParam(value = "userPhone", required = false) String userPhone,
+ @RequestParam(value = "applyForTime", required = false) String applyForTime,
+ @RequestParam(value = "state", required = false) Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return R.ok(withdrawService.withdrawPage(nickname, userPhone, applyForTime, state, Page.of(pageNum, pageSize)));
+ }
+
+ /**
+ * 查看提现记录详情
+ *
+ * @param id 提现记录id
+ */
+ @ApiOperation(value = "提现记录详情", tags = {"后台-用户管理-提现列表"})
+ @GetMapping(value = "/withdrawRecordDetail")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "提现记录id", name = "id", dataType = "Integer", required = true)
+ })
+ public R<Withdraw> withdrawRecordDetail(@RequestParam("id") Integer id) {
+ Withdraw withdraw = withdrawService.lambdaQuery().eq(Withdraw::getId, id)
+ .eq(Withdraw::getIsDelete, 0).one();
+ return R.ok(withdraw);
+ }
+
+ /**
+ * 提现管理-提现审批
+ *
+ * @param id 提现记录id
+ * @param state 审批结果
+ * @param opinion 审批意见
+ */
+ @ApiOperation(value = "提现管理-提现审批", tags = {"后台-用户管理-提现列表"})
+ @GetMapping(value = "/withdrawExamine")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "提现记录id", name = "id", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "审批意见", name = "opinion", dataType = "String"),
+ @ApiImplicitParam(value = "审批同意/不同意(1同意;2驳回)", name = "state", dataType = "Integer", required = true)
+ })
+ public R<Boolean> withdrawExamine(@RequestParam("id") Integer id, @RequestParam("state") Integer state,
+ @RequestParam(value = "opinion", required = false) String opinion,
+ @RequestParam(value = "openId") String openId,
+ @RequestParam(value = "userId") Integer userId) {
+ Withdraw withdraw = withdrawService.lambdaQuery().eq(Withdraw::getId, id).eq(Withdraw::getIsDelete, 0)
+ .eq(Withdraw::getState, 0).one();
+ if (null == withdraw) {
+ return R.fail(503, "当前提现记录审批状态异常!");
+ }
+ // 修改审批状态及审批意见
+ withdraw.setState(state);
+ withdraw.setOpinion(opinion);
+ // 同意提现申请,更改订单提现状态
+ boolean update = true;
+ if (Constants.ONE.equals(state)) {
+ update = orderService.lambdaUpdate()
+ .set(Order::getIsWithdrawal, Constants.ONE)
+ .eq(Order::getId, withdraw.getOrderId()).update();
+ Order order = orderService.lambdaQuery()
+ .eq(Order::getId, withdraw.getOrderId())
+ .eq(Order::getIsDelete, 0).one();
+ if (null == order) {
+ throw new GlobalException("订单信息异常!");
+ }
+ Boolean b = withdrawService.confirmWithdraw(openId, userId, order);
+ if (!b) {
+ throw new GlobalException("提现失败!");
+ }
+ }
+ update = update && withdrawService.updateById(withdraw);
+ return R.ok(update);
+ }
+
+ /**
+ * 用户提现记录导出
+ *
+ * @param exportRequest 提现记录
+ */
+ @ApiOperation(value = "用户提现管理-excel导出用户提现记录", tags = {"后台-用户管理-提现列表"})
+ @PostMapping(value = "/excelExport")
+ public R<List<UserWithdrawRecordVO>> excelExport(@RequestBody WithdrawExportRequest exportRequest) {
+ return R.ok(withdrawService.excelExport(exportRequest));
+ }
+
+ /**
+ * 批量删除提现记录
+ *
+ * @param ids 轮播图多条id拼接
+ * @return 封装分页数据
+ */
+ @ApiOperation(value = "批量删除提现记录", tags = {"后台-用户管理-提现列表"})
+ @GetMapping(value = "/batchDelete")
+ public R<String> batchDelete(@RequestParam("ids") String ids) {
+ List<String> idList = Arrays.stream(ids.split(",")).collect(Collectors.toList());
+ List<Withdraw> list = withdrawService.lambdaQuery().in(Withdraw::getId, idList).list();
+ list.forEach(data -> data.setIsDelete(1));
+ return withdrawService.updateBatchById(list) ? R.ok() : R.fail();
+ }
+
+ /**
+ * 根据类型统计提现金额
+ *
+ * @param request 根据类型统计提现金额
+ * @return 提现金额
+ */
+ @ApiOperation(value = "根据类型统计提现金额", tags = {"后台-用户管理-提现列表"})
+ @PostMapping(value = "/withdrawalTotalMoney")
+ public R<BigDecimal> withdrawalTotalMoney(@RequestBody MoneyQueryRequest request) {
+ return R.ok(withdrawService.withdrawalTotalMoney(request));
+ }
+
+ /**
+ * 修改系统设置-关闭/开启审核
+ *
+ * @return 操作结果
+ */
+ @ApiOperation(value = "关闭/开启审核", tags = {"后台-用户管理-用户列表"})
+ @GetMapping(value = "/enableProcess")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "审核状态(0:未开启,1:已开启)", name = "enableProcess", dataType = "Integer", required = true)
+ })
+ public R<Boolean> enableProcess(@RequestParam("enableProcess") Integer enableProcess) {
+ return R.ok(withdrawService.enableProcess(enableProcess));
+ }
+
+ /**
+ * 获取系统设置-审核设置
+ * --远程调用
+ *
+ * @return 操作结果
+ */
+ @GetMapping(value = "/withdrawProcess")
+ public R<WithdrawalSetting> withdrawProcess() {
+ return R.ok(withdrawService.withdrawProcess());
+ }
+
+ /**
+ * 全局审核状态
+ */
+ @ApiOperation(value = "全局审核状态", tags = {"后台-用户管理-用户列表"})
+ @GetMapping(value = "/withdrawState")
+ public R<WithdrawalSetting> withdrawState() {
+ return R.ok(withdrawService.withdrawProcess());
+ }
+
+ /**
+ * 用户所关联提现记录分页列表
+ *
+ * @param userId 用户id
+ * @param pageNum 页码
+ * @param pageSize 每页显示条数
+ * @return 分页列表
+ */
+ @ApiOperation(value = "用户详情-提现记录分页列表", tags = {"后台-用户管理-用户列表"})
+ @GetMapping(value = "/withdrawList")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "用户id", name = "userId", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
+ })
+ public R<Page<UserWithdrawRecordVO>> withdrawList(@RequestParam("userId") Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return R.ok(withdrawService.withdrawList(userId, Page.of(pageNum, pageSize)));
+ }
+
+ /************************************* 用户端 **************************************************/
+
+ /**
+ * 根据订单获取用户提现申请记录
+ */
+ @ApiOperation(value = "根据订单获取用户提现申请记录", tags = {"用户端"})
+ @GetMapping(value = "/withdrawRecordByUser")
+ public R<List<Withdraw>> withdrawRecordByUser(@RequestParam("orderId") String orderId,
+ @RequestParam("userId") Integer userId) {
+ return R.ok(withdrawService.lambdaQuery().eq(Withdraw::getUserId, userId)
+ .eq(Withdraw::getOrderId, orderId).list());
+ }
+
+ /**
+ * 用户提交提现申请
+ */
+ @ApiOperation(value = "用户提交提现申请", tags = {"用户端"})
+ @GetMapping(value = "/confirmWithdrawByUser")
+ public R<Boolean> confirmWithdrawByUser(@RequestParam("orderId") String orderId,
+ @RequestParam("userId") Integer userId,
+ @RequestParam("openId") String openId,
+ @RequestParam("userPhone") String userPhone) {
+ return R.ok(withdrawService.confirmWithdrawByUser(orderId, userId, openId, userPhone));
+ }
+
+ @GetMapping("/withdrawListByUser")
+ @ApiOperation(value = "用户订单列表", tags = {"用户端"})
+ public R<Page<Order>> withdrawListByUser(@RequestParam("userId") Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return R.ok(orderService.lambdaQuery().eq(Order::getUserId, userId)
+ .eq(Order::getState, 3).eq(Order::getIsDelete, 0).page(Page.of(pageNum, pageSize)));
+ }
+
+ @GetMapping("/withdrawRecordList")
+ @ApiOperation(value = "用户提现申请记录", tags = {"用户端"})
+ public R<Page<Withdraw>> withdrawRecordList(@RequestParam("userId") Integer userId,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ return R.ok(withdrawService.lambdaQuery().eq(Withdraw::getUserId, userId)
+ .eq(Withdraw::getIsDelete, 0).orderByDesc(Withdraw::getCreateTime)
+ .page(Page.of(pageNum, pageSize)));
+ }
+
+ @GetMapping("/withdrawDetailByUser")
+ @ApiOperation(value = "提现订单详情", tags = {"用户端"})
+ public R<WithdrawDetailVO> withdrawDetailByUser(@RequestParam("orderId") String orderId) {
+ Order order = orderService.lambdaQuery()
+ .eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
+ if (null == order) {
+ throw new GlobalException("订单不存在!");
+ }
+ ServeRecord serveRecord = serveRecordService.lambdaQuery()
+ .eq(ServeRecord::getOrderId, orderId).eq(ServeRecord::getIsDelete, 0).one();
+ Withdraw withdraw = withdrawService.lambdaQuery().eq(Withdraw::getOrderId, orderId)
+ .eq(Withdraw::getIsDelete, 0)
+ .orderByDesc(Withdraw::getCreateTime)
+ .last("limit 1").one();
+ WithdrawDetailVO withdrawDetailVO = new WithdrawDetailVO();
+ withdrawDetailVO.setOrderId(order.getId());
+ withdrawDetailVO.setOrderNumber(order.getOrderNumber());
+ withdrawDetailVO.setUserId(order.getUserId());
+ withdrawDetailVO.setServeId(order.getServeId());
+ withdrawDetailVO.setServeName(order.getServeName());
+ withdrawDetailVO.setServePrice(order.getServePrice());
+ withdrawDetailVO.setOrderMoney(order.getOrderMoney());
+ withdrawDetailVO.setReservationName(order.getReservationName());
+ withdrawDetailVO.setReservationPhone(order.getReservationPhone());
+ withdrawDetailVO.setReservationAddress(order.getReservationAddress());
+ withdrawDetailVO.setTime(order.getTime());
+ withdrawDetailVO.setAcceptTime(order.getAcceptTime());
+ withdrawDetailVO.setServerId(order.getServerId());
+ withdrawDetailVO.setServerName(order.getServerName());
+ withdrawDetailVO.setServerPhone(order.getServerPhone());
+ withdrawDetailVO.setReservationRemark(order.getReservationRemark());
+ withdrawDetailVO.setState(order.getState());
+ withdrawDetailVO.setArriveTime(order.getArriveTime());
+ withdrawDetailVO.setCompleteTime(order.getCompleteTime());
+ withdrawDetailVO.setSubsidy(order.getSubsidy());
+ withdrawDetailVO.setIsWithdrawal(order.getIsWithdrawal());
+ if (null != withdraw) {
+ withdrawDetailVO.setWithdrawalState(withdraw.getState());
+ withdrawDetailVO.setWithdrawalTime(withdraw.getCreateTime());
+ }
+ withdrawDetailVO.setAddress(order.getAddress());
+ if (null != serveRecord) {
+ withdrawDetailVO.setPhoto(serveRecord.getPhoto());
+ }
+ return R.ok(withdrawDetailVO);
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ChangeDispatch.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ChangeDispatch.java
new file mode 100644
index 0000000..3885df0
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ChangeDispatch.java
@@ -0,0 +1,71 @@
+package com.ruoyi.order.entity;
+
+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.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 改派管理
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("sys_change_dispatch")
+@ApiModel(value = "ChangeDispatch对象", description = "改派管理")
+public class ChangeDispatch extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("申请师傅")
+ @TableField("worker_id")
+ private Integer workerId;
+
+ @ApiModelProperty("申请师傅姓名")
+ @TableField("worker_name")
+ private String workerName;
+
+ @ApiModelProperty("申请原因")
+ @TableField("apply_reason")
+ private String applyReason;
+
+ @ApiModelProperty("申请改派时间")
+ @TableField("apply_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date applyTime;
+
+ @ApiModelProperty("改派状态 (0:未改派 ;1:已改派 ;2:拒绝)")
+ @TableField("state")
+ private Integer state;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+ @ApiModelProperty("订单编号")
+ @TableField("order_number")
+ private String orderNumber;
+
+ @ApiModelProperty("下单用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ @ApiModelProperty("下单用户名称")
+ @TableField("user_name")
+ private String userName;
+
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Evaluate.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Evaluate.java
new file mode 100644
index 0000000..e8df146
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Evaluate.java
@@ -0,0 +1,58 @@
+package com.ruoyi.order.entity;
+
+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.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 用户评价表
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("t_evaluate")
+@ApiModel(value = "Evaluate对象", description = "用户评价表")
+public class Evaluate extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ @ApiModelProperty("用户手机号")
+ @TableField("user_phone")
+ private String userPhone;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+ @ApiModelProperty("评价内容")
+ @TableField("content")
+ private String content;
+
+ @ApiModelProperty("评价师傅id")
+ @TableField("worker_id")
+ private Integer workerId;
+
+ @ApiModelProperty("评价星级")
+ @TableField("star_rating")
+ private Double starRating;
+
+ @ApiModelProperty("服务单号")
+ @TableField("serve_no")
+ private String serveNo;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java
new file mode 100644
index 0000000..cdda0c2
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java
@@ -0,0 +1,169 @@
+package com.ruoyi.order.entity;
+
+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.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 订单管理
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-05-29
+ */
+@Getter
+@Setter
+@TableName("t_order")
+@ApiModel(value = "Order对象", description = "订单管理")
+public class Order extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("下单城市")
+ @TableField("city")
+ private String city;
+
+ @ApiModelProperty("订单编号")
+ @TableField("order_number")
+ private String orderNumber;
+
+ @ApiModelProperty("下单用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ @ApiModelProperty("站点id")
+ @TableField("site_id")
+ private Integer siteId;
+
+ @ApiModelProperty("站点名称")
+ @TableField("site_name")
+ private String siteName;
+
+ @ApiModelProperty("回收服务id")
+ @TableField("serve_id")
+ private Integer serveId;
+
+ @ApiModelProperty("回收服务名称")
+ @TableField("serve_name")
+ private String serveName;
+
+ @ApiModelProperty("回收服务回收价")
+ @TableField("serve_price")
+ private BigDecimal servePrice;
+
+ @ApiModelProperty("订单成交价(服务回收价 + 津贴)")
+ @TableField("order_money")
+ private BigDecimal orderMoney;
+
+ @ApiModelProperty("预约姓名")
+ @TableField("reservation_name")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ @TableField("reservation_phone")
+ private String reservationPhone;
+
+ @ApiModelProperty("预约地址")
+ @TableField("reservation_address")
+ private String reservationAddress;
+
+ @ApiModelProperty("上门时间段")
+ @TableField("time")
+ private String time;
+
+ @ApiModelProperty("接单时间(师傅接单或后台派单,更新该字段时间)")
+ @TableField("accept_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date acceptTime;
+
+ @ApiModelProperty("服务人员id")
+ @TableField("server_id")
+ private Integer serverId;
+
+ @ApiModelProperty("服务人员名称")
+ @TableField("server_name")
+ private String serverName;
+
+ @ApiModelProperty("服务人员手机号")
+ @TableField("server_phone")
+ private String serverPhone;
+
+ @ApiModelProperty("预约备注")
+ @TableField("reservation_remark")
+ private String reservationRemark;
+
+ @ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派,6:待改派)")
+ @TableField("state")
+ private Integer state;
+
+ @ApiModelProperty("师傅到达预约地点时间")
+ @TableField("arrive_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date arriveTime;
+
+ @ApiModelProperty("订单类型(0:正常订单,1:后台订单(后台订单与用户端、师傅端无联系))")
+ @TableField("type")
+ private Integer type;
+
+ @ApiModelProperty("下单用户经度")
+ @TableField("longitude")
+ private Double longitude;
+
+ @ApiModelProperty("下单用户纬度")
+ @TableField("latitude")
+ private Double latitude;
+
+ @ApiModelProperty("订单完成时间")
+ @TableField("complete_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date completeTime;
+
+ @ApiModelProperty("订单补贴金额")
+ @TableField("subsidy")
+ private BigDecimal subsidy;
+
+ @ApiModelProperty("是否已提现(0:未提现,1:已提现)")
+ @TableField("is_withdrawal")
+ private Integer isWithdrawal;
+
+ @ApiModelProperty("详细地址")
+ @TableField("address")
+ private String address;
+
+ @ApiModelProperty("订单取消原因")
+ @TableField("cancel_reason")
+ private String cancelReason;
+
+ @ApiModelProperty("置顶顺序")
+ @TableField("top_sort")
+ private Integer topSort;
+
+ @ApiModelProperty("是否评价(0:未评价,1:已评价)")
+ @TableField("is_evaluate")
+ private Integer isEvaluate;
+
+ @ApiModelProperty("回收服务封面图")
+ @TableField(exist = false)
+ private String cover;
+
+ @ApiModelProperty("再投原因")
+ @TableField(exist = false)
+ private String applyReason;
+
+ @ApiModelProperty("是否为再投单")
+ @TableField("is_reinvest")
+ private Integer isReinvest;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ServeCoordinate.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ServeCoordinate.java
new file mode 100644
index 0000000..49766c4
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ServeCoordinate.java
@@ -0,0 +1,52 @@
+package com.ruoyi.order.entity;
+
+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.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 师傅路线经纬度信息
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("sys_serve_coordinate")
+@ApiModel(value = "ServeCoordinate对象", description = "师傅路线经纬度信息")
+public class ServeCoordinate extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("师傅id")
+ @TableField("worker_id")
+ private Integer workerId;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+ @ApiModelProperty("路线经纬度")
+ @TableField("coordinate")
+ private String coordinate;
+
+ @ApiModelProperty("经度")
+ @TableField("longitude")
+ private BigDecimal longitude;
+
+ @ApiModelProperty("纬度")
+ @TableField("latitude")
+ private BigDecimal latitude;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ServeRecord.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ServeRecord.java
new file mode 100644
index 0000000..f4a4d91
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/ServeRecord.java
@@ -0,0 +1,42 @@
+package com.ruoyi.order.entity;
+
+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.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 师傅服务记录
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("sys_serve_record")
+@ApiModel(value = "ServeRecord对象", description = "师傅服务记录")
+public class ServeRecord extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+ @ApiModelProperty("现场照片(多张照片 ','隔开)")
+ @TableField("photo")
+ private String photo;
+
+ @ApiModelProperty("服务备注")
+ @TableField("remark")
+ private String remark;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Withdraw.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Withdraw.java
new file mode 100644
index 0000000..32cadb0
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Withdraw.java
@@ -0,0 +1,72 @@
+package com.ruoyi.order.entity;
+
+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.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户提现申请记录表
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-09
+ */
+@Getter
+@Setter
+@TableName("t_withdraw")
+@ApiModel(value = "Withdraw对象", description = "用户提现申请记录表")
+public class Withdraw extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ @ApiModelProperty("用户编号")
+ @TableField("user_no")
+ private String userNo;
+
+ @ApiModelProperty("用户昵称")
+ @TableField("nick_name")
+ private String nickName;
+
+ @ApiModelProperty("用户手机号")
+ @TableField("user_phone")
+ private String userPhone;
+
+ @ApiModelProperty("申请时间")
+ @TableField("apply_for_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date applyForTime;
+
+ @ApiModelProperty("申请金额")
+ @TableField("apply_for_money")
+ private BigDecimal applyForMoney;
+
+ @ApiModelProperty("申请状态 0待审核;1已通过;2已驳回")
+ @TableField("state")
+ private Integer state;
+
+ @ApiModelProperty("审批意见")
+ @TableField("opinion")
+ private String opinion;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/WithdrawalSetting.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/WithdrawalSetting.java
new file mode 100644
index 0000000..79dbda1
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/WithdrawalSetting.java
@@ -0,0 +1,33 @@
+package com.ruoyi.order.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 审核管理全局设置
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@TableName("sys_withdrawal_setting")
+@ApiModel(value = "WithdrawalSetting对象", description = "审核管理全局设置")
+public class WithdrawalSetting {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("是否开启审核(0:未开启,1:已开启)")
+ @TableField("enable_process")
+ private Integer enableProcess;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ChangeDispatchMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ChangeDispatchMapper.java
new file mode 100644
index 0000000..acb757f
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ChangeDispatchMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.order.mapper;
+
+import com.ruoyi.order.entity.ChangeDispatch;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 改派管理 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Mapper
+public interface ChangeDispatchMapper extends BaseMapper<ChangeDispatch> {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/EvaluateMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/EvaluateMapper.java
new file mode 100644
index 0000000..ffe7d52
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/EvaluateMapper.java
@@ -0,0 +1,53 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.order.entity.Evaluate;
+import com.ruoyi.order.vo.EvaluatePageVO;
+import com.ruoyi.order.vo.OrderEvaluateVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 用户评价表 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Mapper
+public interface EvaluateMapper extends BaseMapper<Evaluate> {
+
+ /**
+ * 订单评价分页列表
+ *
+ * @param userName 评价用户
+ * @param orderNumber 订单编号
+ * @param workerName 师傅姓名
+ * @param page 分页
+ * @return 分页
+ */
+ Page<EvaluatePageVO> queryPageList(@Param("userName") String userName, @Param("orderNumber") String orderNumber,
+ @Param("workerName") String workerName, Page<EvaluatePageVO> page);
+
+ /**
+ * 用户所关联评价记录分页列表
+ *
+ * @param userId 用户id
+ * @param page 分页
+ * @return 分页列表
+ */
+ Page<EvaluatePageVO> evaluateList(@Param("userId") Integer userId, Page<EvaluatePageVO> page);
+
+ /**
+ * 订单与评价列表
+ *
+ * @param userId 用户id
+ * @param state 状态
+ * @param page 分页
+ * @return 列表数据
+ */
+ Page<OrderEvaluateVO> evaluateListByUser(@Param("userId") Integer userId,
+ @Param("state") Integer state, Page<OrderEvaluateVO> page);
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
new file mode 100644
index 0000000..04d11b0
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
@@ -0,0 +1,165 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.order.entity.Order;
+import com.ruoyi.order.vo.*;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * <p>
+ * 订单管理 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-05-29
+ */
+public interface OrderMapper extends BaseMapper<Order> {
+
+ /**
+ * 查询本年订单数量
+ *
+ * @param cityList 城市集合
+ * @param orderState 订单状态
+ * @param startTime 开始日期
+ * @param endTime 结束日期
+ * @return 本年订单数量
+ */
+ List<OrderQueryVO> orderCountByYear(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
+ @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+ /**
+ * 查询本月订单数量
+ *
+ * @param cityList 城市集合
+ * @param orderState 订单状态
+ * @param startTime 开始日期
+ * @param endTime 结束日期
+ * @return 本年订单数量
+ */
+ List<OrderQueryVO> orderCountByMonth(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
+ @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+ /**
+ * 查询本周订单数量
+ *
+ * @param cityList 城市集合
+ * @param orderState 订单状态
+ * @param startTime 开始日期
+ * @param endTime 结束日期
+ * @return 本年订单数量
+ */
+ List<OrderQueryVO> orderCountByWeek(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
+ @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+ /**
+ * 查询当天订单数量
+ *
+ * @param cityList 城市集合
+ * @param orderState 订单状态
+ * @param startTime 开始日期
+ * @param endTime 结束日期
+ * @return 本年订单数量
+ */
+ List<OrderQueryVO> orderCountByToday(@Param("cityList") List<String> cityList, @Param("orderState") Integer orderState,
+ @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+ /**
+ * 查询整个季度的交易额(订单状态为:已完工)
+ *
+ * @param startDateStr 季度开始时间
+ * @param endDateStr 季度结束时间
+ * @param cityList 城市集合
+ * @return 总交易额
+ */
+ BigDecimal totalMoneyByQuarter(@Param("start") String startDateStr, @Param("end") String endDateStr,
+ @Param("cityList") List<String> cityList);
+
+ /**
+ * 查询整个年度的交易额(订单状态为:已完工)
+ *
+ * @param cityList 城市集合
+ * @return 总交易额
+ */
+ BigDecimal totalMoneyByYear(@Param("cityList") List<String> cityList);
+
+ /**
+ * 查询整个月度的交易额(订单状态为:已完工)
+ *
+ * @param cityList 城市列表
+ * @return 总交易额
+ */
+ BigDecimal totalMoneyByMonth(@Param("cityList") List<String> cityList);
+
+ /**
+ * 订单管理-订单统计
+ *
+ * @param name 师傅姓名
+ * @param phone 师傅电话
+ * @param page 分页
+ * @return 分页统计
+ */
+ Page<OrderCountVO> orderCount(@Param("name") String name, @Param("phone") String phone, Page<OrderCountVO> page);
+
+ /**
+ * 订单列表
+ *
+ * @param orderQueryRequest 订单列表查询参数
+ * @param page 分页
+ * @return 分页
+ */
+ Page<Order> queryPage(@Param("data") OrderQueryRequest orderQueryRequest, Page<Order> page);
+
+ /**
+ * 订单管理分页模块,订单数量统计
+ *
+ * @param orderQueryRequest 筛选参数
+ * @return 统计数量
+ */
+ List<Order> orderPageCount(@Param("data") OrderQueryRequest orderQueryRequest);
+
+ /**
+ * 根据所选id查询
+ *
+ * @param ids id集合
+ * @return 返回列表
+ */
+ List<Order> exportByIdList(List<String> ids);
+
+ /**
+ * 根据筛选条件查询
+ *
+ * @param orderQueryRequest 筛选条件
+ * @return 返回列表
+ */
+ List<Order> exportList(@Param("data") OrderQueryRequest orderQueryRequest);
+
+ /**
+ * 根据类型获取交易额
+ *
+ * @param userId 用户端
+ * @param state 订单状态
+ * @param page 分页
+ * @return 交易额
+ */
+ Page<Order> orderListWorker(@Param("userId") Integer userId, @Param("state") Integer state, Page<Order> page);
+
+ /**
+ * 师傅端-根据师傅id获取订单数量
+ *
+ * @param workerIds 师傅id集合
+ * @return 接单列表
+ */
+ List<WorkerOrderRankVO> workerOrderRank(@Param("ids") List<Integer> workerIds);
+
+ /**
+ * 统计订单状态数量
+ *
+ * @param workerId 师傅id
+ * @return 统计结果
+ */
+ WorkerOrderCountVO orderStateCount(@Param("workerId") Integer workerId);
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ServeCoordinateMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ServeCoordinateMapper.java
new file mode 100644
index 0000000..e83eab8
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ServeCoordinateMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.order.mapper;
+
+import com.ruoyi.order.entity.ServeCoordinate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 师傅路线经纬度信息 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Mapper
+public interface ServeCoordinateMapper extends BaseMapper<ServeCoordinate> {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ServeRecordMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ServeRecordMapper.java
new file mode 100644
index 0000000..289aaa0
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/ServeRecordMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.order.mapper;
+
+import com.ruoyi.order.entity.ServeRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 师傅服务记录 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Mapper
+public interface ServeRecordMapper extends BaseMapper<ServeRecord> {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/WithdrawMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/WithdrawMapper.java
new file mode 100644
index 0000000..b59fb20
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/WithdrawMapper.java
@@ -0,0 +1,93 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.order.entity.Withdraw;
+import com.ruoyi.order.vo.UserWithdrawRecordVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * <p>
+ * 用户提现申请记录表 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-09
+ */
+@Mapper
+public interface WithdrawMapper extends BaseMapper<Withdraw> {
+
+ /**
+ * 用户所关联提现记录分页列表
+ *
+ * @param nickname 用户名称
+ * @param userPhone 用户手机号
+ * @param applyForTime 申请时间
+ * @param state 审核状态
+ * @param page 分页
+ * @return 分页列表
+ */
+ Page<UserWithdrawRecordVO> withdrawPage(@Param("name") String nickname, @Param("phone") String userPhone,
+ @Param("time") String applyForTime,
+ @Param("state") Integer state, Page<UserWithdrawRecordVO> page);
+
+ /**
+ * 根据所选id导出
+ *
+ * @param ids 提现记录ids
+ * @return 列表
+ */
+ List<UserWithdrawRecordVO> exportByIdList(@Param("ids") List<String> ids);
+
+ /**
+ * 提现记录列表
+ *
+ * @param nickname 用户名称
+ * @param userPhone 用户手机号
+ * @param applyForTime 申请时间
+ * @param state 审核状态
+ * @return 分页列表
+ */
+ List<UserWithdrawRecordVO> exportList(@Param("name") String nickname, @Param("phone") String userPhone,
+ @Param("time") String applyForTime,
+ @Param("state") Integer state);
+
+ /**
+ * 获取用户提现金额
+ *
+ * @param cityList 城市集合
+ * @param startDateStr 季度开始时间
+ * @param endDateStr 季度结束时间
+ * @return 总金额
+ */
+ BigDecimal withdrawalTotalMoney(@Param("cityList") List<String> cityList, @Param("start") String startDateStr, @Param("end") String endDateStr);
+
+ /**
+ * 年度查询
+ *
+ * @param cityList 城市列表
+ * @return 年度提现总额
+ */
+ BigDecimal withdrawalTotalMoneyByYear(@Param("cityList") List<String> cityList);
+
+ /**
+ * 月度查询
+ *
+ * @param cityList 城市列表
+ * @return 年度提现总额
+ */
+ BigDecimal withdrawalTotalMoneyByMonth(@Param("cityList") List<String> cityList);
+
+ /**
+ * 用户所关联提现记录分页列表
+ *
+ * @param userId 用户id
+ * @param page 分页参数
+ * @return 分页列表
+ */
+ Page<UserWithdrawRecordVO> withdrawList(@Param("userId") Integer userId, Page<UserWithdrawRecordVO> page);
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/WithdrawalSettingMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/WithdrawalSettingMapper.java
new file mode 100644
index 0000000..a8c0b73
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/WithdrawalSettingMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.order.mapper;
+
+import com.ruoyi.order.entity.WithdrawalSetting;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 审核管理全局设置 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Mapper
+public interface WithdrawalSettingMapper extends BaseMapper<WithdrawalSetting> {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderEvaluateSubmitRequest.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderEvaluateSubmitRequest.java
new file mode 100644
index 0000000..bb0d983
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderEvaluateSubmitRequest.java
@@ -0,0 +1,43 @@
+package com.ruoyi.order.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 11:14
+ */
+@Data
+public class OrderEvaluateSubmitRequest {
+
+ @ApiModelProperty("订单id")
+ @NotNull(message = "请选择评价订单!")
+ private String orderId;
+
+ @ApiModelProperty("评价内容")
+ private String content;
+
+ @ApiModelProperty("评价星级")
+ @NotNull(message = "请选择评价星级!")
+ private Double starRating;
+
+ @ApiModelProperty("服务单号")
+ private String serveNo;
+
+ @ApiModelProperty("用户id")
+ private Integer userId;
+
+ public OrderEvaluateSubmitRequest() {
+ }
+
+ public OrderEvaluateSubmitRequest(String orderId, String content, Double starRating, String serveNo, Integer userId) {
+ this.orderId = orderId;
+ this.content = content;
+ this.starRating = starRating;
+ this.serveNo = serveNo;
+ this.userId = userId;
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderRequest.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderRequest.java
new file mode 100644
index 0000000..b2d86e0
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderRequest.java
@@ -0,0 +1,106 @@
+package com.ruoyi.order.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-08 15:27
+ */
+@Data
+public class OrderRequest {
+
+ @ApiModelProperty("下单城市")
+ private String city;
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("下单用户id")
+ private Integer userId;
+
+ @ApiModelProperty("站点id")
+ private Integer siteId;
+
+ @ApiModelProperty("站点名称")
+ private String siteName;
+
+ @ApiModelProperty("回收服务id")
+ private Integer serveId;
+
+ @ApiModelProperty("回收服务名称")
+ private String serveName;
+
+ @ApiModelProperty("回收服务回收价")
+ private BigDecimal servePrice;
+
+ @ApiModelProperty("订单成交价(服务回收价 + 津贴)")
+ private BigDecimal orderMoney;
+
+ @ApiModelProperty("预约姓名")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ private String reservationPhone;
+
+ @ApiModelProperty("预约地址")
+ private String reservationAddress;
+
+ @ApiModelProperty("上门时间段")
+ private String time;
+
+ @ApiModelProperty("接单时间(师傅接单或后台派单,更新该字段时间)")
+ private Date acceptTime;
+
+ @ApiModelProperty("服务人员id")
+ private Integer serverId;
+
+ @ApiModelProperty("服务人员名称")
+ private String serverName;
+
+ @ApiModelProperty("服务人员手机号")
+ private String serverPhone;
+
+ @ApiModelProperty("预约备注")
+ private String reservationRemark;
+
+ @ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派)")
+ private Integer state;
+
+ @ApiModelProperty("师傅到达预约地点时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date arriveTime;
+
+ @ApiModelProperty("订单类型(0:正常订单,1:后台订单(后台订单与用户端、师傅端无联系))")
+ private Integer type;
+
+ @ApiModelProperty("下单用户经度")
+ private Double longitude;
+
+ @ApiModelProperty("下单用户纬度")
+ private Double latitude;
+
+ @ApiModelProperty("订单完成时间")
+ private Date completeTime;
+
+ @ApiModelProperty("订单补贴金额")
+ private BigDecimal subsidy;
+
+ @ApiModelProperty("是否已提现(0:未提现,1:已提现)")
+ private Integer isWithdrawal;
+
+ @ApiModelProperty("详细地址")
+ private String address;
+
+ @ApiModelProperty("订单取消原因")
+ private String cancelReason;
+
+ @ApiModelProperty("再投原因")
+ private String applyReason;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderSubmitRequest.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderSubmitRequest.java
new file mode 100644
index 0000000..06ec905
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/OrderSubmitRequest.java
@@ -0,0 +1,22 @@
+package com.ruoyi.order.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-06 14:25
+ */
+@Data
+public class OrderSubmitRequest {
+
+ @ApiModelProperty("订单id")
+ private String orderId;
+
+ @ApiModelProperty("现场照片")
+ private List<String> photo;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/UserOrderRequest.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/UserOrderRequest.java
new file mode 100644
index 0000000..f7a0926
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/UserOrderRequest.java
@@ -0,0 +1,64 @@
+package com.ruoyi.order.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 用户下单请求参数对象
+ *
+ * @author hjl
+ * @since 2024-06-17
+ */
+@Data
+@ApiModel(value = "OrderRequest对象", description = "用户下单请求参数对象")
+public class UserOrderRequest {
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("回收服务id")
+ private Integer serveId;
+
+ @ApiModelProperty("预约姓名")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ private String reservationPhone;
+
+ @ApiModelProperty("预约地址(收货地址id)")
+ private Integer addressId;
+
+ @ApiModelProperty("上门时间")
+ private String time;
+
+ @ApiModelProperty("预约备注(服务备注)")
+ private String reservationRemark;
+
+ @ApiModelProperty("下单用户经度")
+ private Double longitude;
+
+ @ApiModelProperty("下单用户纬度")
+ private Double latitude;
+
+ @ApiModelProperty("订单津贴金额")
+ private BigDecimal subsidy;
+
+ @ApiModelProperty("回收服务价格")
+ private BigDecimal defaultPrice;
+
+ @ApiModelProperty("回收服务名称")
+ private String serveName;
+
+ @ApiModelProperty("预约下单地址")
+ private String address;
+
+ @ApiModelProperty("详细地址")
+ private String addressDetail;
+
+ @ApiModelProperty("下单用户id")
+ private Integer userId;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/WithdrawExportRequest.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/WithdrawExportRequest.java
new file mode 100644
index 0000000..7ad4773
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/WithdrawExportRequest.java
@@ -0,0 +1,31 @@
+package com.ruoyi.order.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-28 11:31
+ */
+@Data
+public class WithdrawExportRequest {
+
+ @ApiModelProperty("用户昵称")
+ private String nickname;
+
+ @ApiModelProperty("手机号")
+ private String userPhone;
+
+ @ApiModelProperty("申请时间")
+ private String applyForTime;
+
+ @ApiModelProperty("提现状态")
+ private Integer state;
+
+ @ApiModelProperty("所选数据id")
+ private List<String> idList;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ChangeDispatchService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ChangeDispatchService.java
new file mode 100644
index 0000000..1ac37e1
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ChangeDispatchService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.order.service;
+
+import com.ruoyi.order.entity.ChangeDispatch;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 改派管理 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+public interface ChangeDispatchService extends IService<ChangeDispatch> {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/EvaluateService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/EvaluateService.java
new file mode 100644
index 0000000..230cbc5
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/EvaluateService.java
@@ -0,0 +1,48 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.order.entity.Evaluate;
+import com.ruoyi.order.vo.EvaluatePageVO;
+import com.ruoyi.order.vo.OrderEvaluateVO;
+
+/**
+ * <p>
+ * 用户评价表 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+public interface EvaluateService extends IService<Evaluate> {
+
+ /**
+ * 订单评价分页列表
+ *
+ * @param userName 评价用户
+ * @param orderNumber 订单编号
+ * @param workerName 师傅姓名
+ * @param page 分页
+ * @return 分页
+ */
+ Page<EvaluatePageVO> queryPageList(String userName, String orderNumber, String workerName, Page<EvaluatePageVO> page);
+
+ /**
+ * 用户所关联评价记录分页列表
+ *
+ * @param userId 用户id
+ * @param page 分页
+ * @return 分页列表
+ */
+ Page<EvaluatePageVO> evaluateList(Integer userId, Page<EvaluatePageVO> page);
+
+ /**
+ * 订单评价列表
+ *
+ * @param userId 用户id
+ * @param state 状态
+ * @param page 分页
+ * @return 评价信息
+ */
+ Page<OrderEvaluateVO> evaluateListByUser(Integer userId, Integer state, Page<OrderEvaluateVO> page);
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
new file mode 100644
index 0000000..e7e921f
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
@@ -0,0 +1,133 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.vo.Path;
+import com.ruoyi.order.entity.Order;
+import com.ruoyi.order.request.UserOrderRequest;
+import com.ruoyi.order.vo.*;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * <p>
+ * 订单管理 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-05-29
+ */
+public interface OrderService extends IService<Order> {
+
+ /**
+ * 回收订单统计
+ *
+ * @param orderCount 查询所需参数
+ * @return 柱状图数据
+ */
+ OrderResultVO orderCountHome(OrderCountRequest orderCount);
+
+ /**
+ * excel模板导出
+ *
+ * @param orderQueryRequest 筛选参数
+ * @return 导出结果
+ */
+ List<Order> excelExport(OrderQueryRequest orderQueryRequest);
+
+ /**
+ * 订单列表
+ *
+ * @param orderQueryRequest 订单列表查询参数
+ * @return 分页
+ */
+ Page<Order> queryPage(OrderQueryRequest orderQueryRequest);
+
+ /**
+ * 订单管理-订单统计
+ *
+ * @param name 师傅姓名
+ * @param phone 师傅电话
+ * @param page 分页
+ * @return 分页统计
+ */
+ Page<OrderCountVO> orderCount(String name, String phone, Page<OrderCountVO> page);
+
+ /**
+ * 订单管理分页模块,订单数量统计
+ *
+ * @param orderQueryRequest 筛选参数
+ * @return 统计数量
+ */
+ OrderPageCountVO orderPageCount(OrderQueryRequest orderQueryRequest);
+
+ /**
+ * 根据类型获取交易额
+ *
+ * @param moneyQueryRequest 筛选参数
+ * @return 交易额
+ */
+ BigDecimal tradeMoney(MoneyQueryRequest moneyQueryRequest);
+
+ /**
+ * 根据类型获取交易额
+ *
+ * @param userId 用户端
+ * @param state 订单状态
+ * @param pageNum 页码
+ * @param pageSize 条数
+ * @return 交易额
+ */
+ Page<Order> orderListWorker(Integer userId, Integer state, Integer pageNum, Integer pageSize);
+
+ /**
+ * 师傅端-根据师傅id获取订单数量
+ *
+ * @param workerIds 师傅id集合
+ * @return 接单列表
+ */
+ List<WorkerOrderRankVO> workerOrderRank(List<Integer> workerIds);
+
+ /**
+ * 到订单去,路线规划
+ *
+ * @param userPosition 用户下单经纬度信息
+ * @param workerPosition 师傅所在经纬度信息
+ * @return 路线规划
+ */
+ Path orderNavigation(String userPosition, String workerPosition);
+
+ /**
+ * 订单置顶
+ *
+ * @param orderId 订单id
+ * @param workerId 师傅id
+ * @return 操作结果
+ */
+ Boolean orderTop(String orderId, Integer workerId);
+
+ /**
+ * 统计订单状态数量
+ *
+ * @param workerId 师傅id
+ * @return 统计结果
+ */
+ WorkerOrderCountVO orderStateCount(Integer workerId);
+
+ /**
+ * 用户端-用户下单
+ *
+ * @param userOrderRequest 下单参数
+ * @return 下单结果
+ */
+ Boolean placeOrder(UserOrderRequest userOrderRequest);
+
+ /**
+ * 用户端-预订单信息
+ *
+ * @param userOrderRequest 下单参数
+ * @return 下单结果
+ */
+ String orderEstimate(UserOrderRequest userOrderRequest);
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ServeCoordinateService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ServeCoordinateService.java
new file mode 100644
index 0000000..3de51f8
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ServeCoordinateService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.order.service;
+
+import com.ruoyi.order.entity.ServeCoordinate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 师傅路线经纬度信息 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+public interface ServeCoordinateService extends IService<ServeCoordinate> {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ServeRecordService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ServeRecordService.java
new file mode 100644
index 0000000..39a0b3b
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ServeRecordService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.order.service;
+
+import com.ruoyi.order.entity.ServeRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 师傅服务记录 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+public interface ServeRecordService extends IService<ServeRecord> {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/WithdrawService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/WithdrawService.java
new file mode 100644
index 0000000..e61bc71
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/WithdrawService.java
@@ -0,0 +1,99 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.order.entity.Order;
+import com.ruoyi.order.entity.Withdraw;
+import com.ruoyi.order.entity.WithdrawalSetting;
+import com.ruoyi.order.request.WithdrawExportRequest;
+import com.ruoyi.order.vo.MoneyQueryRequest;
+import com.ruoyi.order.vo.UserWithdrawRecordVO;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * <p>
+ * 用户提现申请记录表 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-09
+ */
+public interface WithdrawService extends IService<Withdraw> {
+
+ /**
+ * 用户所关联提现记录分页列表
+ *
+ * @param nickname 用户名称
+ * @param userPhone 用户手机号
+ * @param applyForTime 申请开始时间
+ * @param state 审核状态
+ * @param page 分页
+ * @return 分页列表
+ */
+ Page<UserWithdrawRecordVO> withdrawPage(String nickname, String userPhone, String applyForTime,
+ Integer state, Page<UserWithdrawRecordVO> page);
+
+ /**
+ * 根据筛选条件查询数据
+ *
+ * @param exportRequest 筛选参数
+ * @return 查询列表
+ */
+ List<UserWithdrawRecordVO> excelExport(WithdrawExportRequest exportRequest);
+
+ /**
+ * 提现审批通过,微信打款
+ *
+ * @param openId 微信用户openId
+ * @param userId 用户id
+ * @param order 订单信息
+ * @return 打款结果
+ */
+ Boolean confirmWithdraw(String openId, Integer userId, Order order);
+
+ /**
+ * 根据类型统计提现金额
+ *
+ * @param request 根据类型统计提现金额
+ * @return 提现金额
+ */
+ BigDecimal withdrawalTotalMoney(MoneyQueryRequest request);
+
+ /**
+ * 修改全局审核状态
+ *
+ * @param enableProcess 状态
+ * @return 修改结果
+ */
+ Boolean enableProcess(Integer enableProcess);
+
+ /**
+ * 获取全局审核设置
+ *
+ * @return 审核设置
+ */
+ WithdrawalSetting withdrawProcess();
+
+ /**
+ * 用户所关联提现记录分页列表
+ *
+ * @param userId 用户id
+ * @param page 分页参数
+ * @return 分页列表
+ */
+ Page<UserWithdrawRecordVO> withdrawList(Integer userId, Page<UserWithdrawRecordVO> page);
+
+ /**
+ * 用户端-提交提现申请
+ *
+ * @param orderId 订单id
+ * @param userId 用户id
+ * @param openId 微信用户openId
+ * @param userPhone 用户手机号
+ * @return 提现结果
+ */
+ Boolean confirmWithdrawByUser(String orderId, Integer userId, String openId, String userPhone);
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/WithdrawalSettingService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/WithdrawalSettingService.java
new file mode 100644
index 0000000..1805160
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/WithdrawalSettingService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.order.service;
+
+import com.ruoyi.order.entity.WithdrawalSetting;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 审核管理全局设置 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+public interface WithdrawalSettingService extends IService<WithdrawalSetting> {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChangeDispatchServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChangeDispatchServiceImpl.java
new file mode 100644
index 0000000..a9e774c
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChangeDispatchServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.order.service.impl;
+
+import com.ruoyi.order.entity.ChangeDispatch;
+import com.ruoyi.order.mapper.ChangeDispatchMapper;
+import com.ruoyi.order.service.ChangeDispatchService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 改派管理 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Service
+public class ChangeDispatchServiceImpl extends ServiceImpl<ChangeDispatchMapper, ChangeDispatch> implements ChangeDispatchService {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/EvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/EvaluateServiceImpl.java
new file mode 100644
index 0000000..d3263b4
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/EvaluateServiceImpl.java
@@ -0,0 +1,37 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.entity.Evaluate;
+import com.ruoyi.order.mapper.EvaluateMapper;
+import com.ruoyi.order.service.EvaluateService;
+import com.ruoyi.order.vo.EvaluatePageVO;
+import com.ruoyi.order.vo.OrderEvaluateVO;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户评价表 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Service
+public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> implements EvaluateService {
+
+ @Override
+ public Page<EvaluatePageVO> queryPageList(String userName, String orderNumber, String workerName, Page<EvaluatePageVO> page) {
+ return baseMapper.queryPageList(userName, orderNumber, workerName, page);
+ }
+
+ @Override
+ public Page<EvaluatePageVO> evaluateList(Integer userId, Page<EvaluatePageVO> page) {
+ return baseMapper.evaluateList(userId, page);
+ }
+
+ @Override
+ public Page<OrderEvaluateVO> evaluateListByUser(Integer userId, Integer state, Page<OrderEvaluateVO> page) {
+ return baseMapper.evaluateListByUser(userId, state, page);
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
new file mode 100644
index 0000000..c07ae66
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -0,0 +1,326 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.constant.OrderConstants;
+import com.ruoyi.common.core.utils.GaoDeMapUtil;
+import com.ruoyi.common.core.vo.Path;
+import com.ruoyi.order.entity.ChangeDispatch;
+import com.ruoyi.order.entity.Order;
+import com.ruoyi.order.mapper.OrderMapper;
+import com.ruoyi.order.request.UserOrderRequest;
+import com.ruoyi.order.service.ChangeDispatchService;
+import com.ruoyi.order.service.OrderService;
+import com.ruoyi.order.vo.*;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.Month;
+import java.time.Year;
+import java.time.temporal.TemporalAdjusters;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 订单管理 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-05-29
+ */
+
+@Service
+public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
+
+ @Resource
+ private ChangeDispatchService changeDispatchService;
+
+ @Override
+ public OrderResultVO orderCountHome(OrderCountRequest orderCount) {
+ List<String> cityList = orderCount.getCityList();
+ Integer orderState = orderCount.getOrderState();
+ String countType = orderCount.getCountType();
+ String startTime = orderCount.getStartTime();
+ String endTime = orderCount.getEndTime();
+ List<OrderQueryVO> list;
+ // 根据查询类型查询订单信息
+ if (OrderConstants.YEAR.equals(countType)) {
+ list = baseMapper.orderCountByYear(cityList, orderState, startTime, endTime);
+ } else if (OrderConstants.MONTH.equals(countType)) {
+ list = baseMapper.orderCountByMonth(cityList, orderState, startTime, endTime);
+ } else if (OrderConstants.WEEK.equals(countType)) {
+ list = baseMapper.orderCountByWeek(cityList, orderState, startTime, endTime);
+ } else if (OrderConstants.TODAY.equals(countType)) {
+ list = baseMapper.orderCountByToday(cityList, orderState, startTime, endTime);
+ } else {
+ list = new ArrayList<>();
+ }
+ // 计算订单总额及总订单数量
+ BigDecimal totalMoney;
+ int orderNumber;
+ if (list.isEmpty()) {
+ totalMoney = BigDecimal.ZERO;
+ orderNumber = 0;
+ } else {
+ totalMoney = list.stream().map(OrderQueryVO::getTotalPrice)
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+ orderNumber = list.stream().filter(order -> order.getNumber() != null)
+ .mapToInt(OrderQueryVO::getNumber).sum();
+ }
+ return new OrderResultVO(totalMoney, orderNumber, list);
+ }
+
+ @Override
+ public List<Order> excelExport(OrderQueryRequest orderQueryRequest) {
+ List<String> ids = orderQueryRequest.getIds();
+ List<Order> list;
+ if (null != ids && !ids.isEmpty()) {
+ list = baseMapper.exportByIdList(ids);
+ } else {
+ list = baseMapper.exportList(orderQueryRequest);
+ }
+ return list;
+ }
+
+ @Override
+ public Page<Order> queryPage(OrderQueryRequest orderQueryRequest) {
+ Page<Order> page = Page.of(orderQueryRequest.getPageNum(), orderQueryRequest.getPageSize());
+ // 基础查询
+ Page<Order> pageList = baseMapper.queryPage(orderQueryRequest, page);
+ for (Order order : pageList.getRecords()) {
+ ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery()
+ .eq(ChangeDispatch::getOrderId, order.getId())
+ .eq(ChangeDispatch::getIsDelete, 0)
+ .orderByDesc(ChangeDispatch::getCreateTime)
+ .last("limit 1").one();
+ if (null != changeDispatch) {
+ order.setApplyReason(changeDispatch.getApplyReason());
+ }
+ }
+ return pageList;
+ }
+
+
+ @Override
+ public Page<OrderCountVO> orderCount(String name, String phone, Page<OrderCountVO> page) {
+ return baseMapper.orderCount(name, phone, page);
+ }
+
+ @Override
+ public OrderPageCountVO orderPageCount(OrderQueryRequest orderQueryRequest) {
+ List<Order> orderList = baseMapper.orderPageCount(orderQueryRequest);
+ int total = 0;
+ int toBeDispatched = 0;
+ int stayDoorstep = 0;
+ int toBeCompleted = 0;
+ int completed = 0;
+ int canceled = 0;
+ int reInvestment = 0;
+ for (Order order : orderList) {
+ total++;
+ Integer state = order.getState();
+ if (Constants.ZERO.equals(state)) {
+ toBeDispatched++;
+ } else if (Constants.ONE.equals(state)) {
+ stayDoorstep++;
+ } else if (Constants.TWO.equals(state)) {
+ toBeCompleted++;
+ } else if (Constants.THREE.equals(state)) {
+ completed++;
+ } else if (Constants.FOUR.equals(state)) {
+ canceled++;
+ }
+ if (order.getIsReinvest() != null && order.getIsReinvest() == 1) {
+ reInvestment++;
+ }
+ }
+ return new OrderPageCountVO(total, toBeDispatched, stayDoorstep,
+ toBeCompleted, completed, canceled, reInvestment);
+ }
+
+ @Override
+ public BigDecimal tradeMoney(MoneyQueryRequest moneyQueryRequest) {
+ List<String> cityList = moneyQueryRequest.getCityList();
+ String type = moneyQueryRequest.getType();
+ // 计算当前季度时间所包含时间
+ int currentYear = Year.now().getValue();
+ // 获取当前月份
+ Month currentMonth = LocalDate.now().getMonth();
+ // 计算当前季度的开始时间和结束时间
+ LocalDate startDate = LocalDate.of(currentYear, getStartMonthOfQuarter(currentMonth), 1);
+ LocalDate endDate = startDate.plusMonths(2).with(TemporalAdjusters.lastDayOfMonth());
+ String startDateStr = String.valueOf(startDate);
+ String endDateStr = String.valueOf(endDate);
+ BigDecimal totalMoney;
+ if (OrderConstants.QUARTER.equals(type)) {
+ // 用户总交易额
+ totalMoney = baseMapper.totalMoneyByQuarter(startDateStr, endDateStr, cityList);
+ } else if (OrderConstants.YEAR.equals(type)) {
+ // 用户总交易额
+ totalMoney = baseMapper.totalMoneyByYear(cityList);
+ } else if (OrderConstants.MONTH.equals(type)) {
+ // 用户总交易额
+ totalMoney = baseMapper.totalMoneyByMonth(cityList);
+ } else {
+ // 数量初始化
+ totalMoney = BigDecimal.ZERO;
+ }
+ return totalMoney;
+ }
+
+ @Override
+ public Page<Order> orderListWorker(Integer userId, Integer state, Integer pageNum, Integer pageSize) {
+ return baseMapper.orderListWorker(userId, state, Page.of(pageNum, pageSize));
+ }
+
+ @Override
+ public List<WorkerOrderRankVO> workerOrderRank(List<Integer> workerIds) {
+ List<WorkerOrderRankVO> list = baseMapper.workerOrderRank(workerIds);
+ if (list.size() > Constants.TEN) {
+ list.subList(Constants.ZERO, Constants.TEN);
+ }
+ return list;
+ }
+
+ @Override
+ public Path orderNavigation(String userPosition, String workerPosition) {
+ return GaoDeMapUtil.routing(workerPosition, userPosition);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean orderTop(String orderId, Integer workerId) {
+ // 订单代办列表
+ List<Order> orderList = this.lambdaQuery().eq(Order::getServerId, workerId)
+ .in(Order::getState, Constants.ONE, Constants.TWO)
+ .eq(Order::getIsDelete, 0)
+ .orderByAsc(Order::getTopSort).list();
+ int itemSort = 2;
+ for (Order order : orderList) {
+ if (null != order.getTopSort()) {
+ order.setTopSort(itemSort);
+ itemSort++;
+ }
+ }
+ this.updateBatchById(orderList);
+ return this.lambdaUpdate().set(Order::getTopSort, Constants.ONE)
+ .eq(Order::getServerId, workerId)
+ .eq(Order::getId, orderId)
+ .eq(Order::getIsDelete, 0).update();
+ }
+
+ @Override
+ public WorkerOrderCountVO orderStateCount(Integer workerId) {
+ return baseMapper.orderStateCount(workerId);
+ }
+
+ @Override
+ public Boolean placeOrder(UserOrderRequest userOrderRequest) {
+ // 下单参数
+ String orderNumber = userOrderRequest.getOrderNumber();
+ Integer serveId = userOrderRequest.getServeId();
+ String reservationName = userOrderRequest.getReservationName();
+ String reservationPhone = userOrderRequest.getReservationPhone();
+ Integer userId = userOrderRequest.getUserId();
+ String time = userOrderRequest.getTime();
+ String reservationRemark = userOrderRequest.getReservationRemark();
+ Double longitude = userOrderRequest.getLongitude();
+ Double latitude = userOrderRequest.getLatitude();
+ BigDecimal subsidy = userOrderRequest.getSubsidy();
+ BigDecimal defaultPrice = userOrderRequest.getDefaultPrice();
+ String serveName = userOrderRequest.getServeName();
+ String address = userOrderRequest.getAddress();
+ String addressDetail = userOrderRequest.getAddressDetail();
+ // 订单信息
+ Order order = new Order();
+ order.setOrderNumber(orderNumber);
+ order.setServeId(serveId);
+ order.setServeName(serveName);
+ order.setServePrice(defaultPrice);
+ order.setUserId(userId);
+ order.setReservationName(reservationName);
+ order.setReservationPhone(reservationPhone);
+ order.setReservationAddress(address);
+ order.setTime(time);
+ order.setReservationRemark(reservationRemark);
+ order.setOrderMoney(defaultPrice.add(new BigDecimal(String.valueOf(subsidy))));
+ order.setState(Constants.ZERO);
+ order.setType(Constants.ZERO);
+ order.setLongitude(longitude);
+ order.setLatitude(latitude);
+ order.setIsWithdrawal(Constants.ZERO);
+ order.setSubsidy(subsidy);
+ order.setAddress(addressDetail);
+ return this.save(order);
+ }
+
+ @Override
+ public String orderEstimate(UserOrderRequest userOrderRequest) {
+ // 下单参数
+ String orderNumber = userOrderRequest.getOrderNumber();
+ Integer serveId = userOrderRequest.getServeId();
+ String reservationName = userOrderRequest.getReservationName();
+ String reservationPhone = userOrderRequest.getReservationPhone();
+ Integer userId = userOrderRequest.getUserId();
+ String time = userOrderRequest.getTime();
+ String reservationRemark = userOrderRequest.getReservationRemark();
+ Double longitude = userOrderRequest.getLongitude();
+ Double latitude = userOrderRequest.getLatitude();
+ BigDecimal subsidy = userOrderRequest.getSubsidy();
+ BigDecimal defaultPrice = userOrderRequest.getDefaultPrice();
+ String serveName = userOrderRequest.getServeName();
+ String address = userOrderRequest.getAddress();
+ String addressDetail = userOrderRequest.getAddressDetail();
+ // 订单信息
+ Order order = new Order();
+ order.setOrderNumber(orderNumber);
+ order.setServeId(serveId);
+ order.setServeName(serveName);
+ order.setServePrice(defaultPrice);
+ order.setUserId(userId);
+ order.setReservationName(reservationName);
+ order.setReservationPhone(reservationPhone);
+ if (null == userOrderRequest.getAddressId()) {
+ order.setReservationAddress(addressDetail);
+ } else {
+ order.setReservationAddress(address);
+ }
+ order.setTime(time);
+ order.setReservationRemark(reservationRemark);
+ if (null != subsidy) {
+ order.setOrderMoney(defaultPrice.add(new BigDecimal(String.valueOf(subsidy))));
+ } else {
+ order.setOrderMoney(defaultPrice);
+ }
+ order.setState(Constants.ZERO);
+ order.setType(Constants.ZERO);
+ order.setLongitude(longitude);
+ order.setLatitude(latitude);
+ order.setIsWithdrawal(Constants.ZERO);
+ order.setSubsidy(subsidy);
+ order.setAddress(addressDetail);
+ this.save(order);
+ return String.valueOf(order.getId());
+ }
+
+ /**
+ * 根据当前月份获取当前季度的开始月份
+ */
+ private static Month getStartMonthOfQuarter(Month currentMonth) {
+ if (currentMonth.compareTo(Month.JANUARY) >= 0 && currentMonth.compareTo(Month.MARCH) <= 0) {
+ return Month.JANUARY;
+ } else if (currentMonth.compareTo(Month.APRIL) >= 0 && currentMonth.compareTo(Month.JUNE) <= 0) {
+ return Month.APRIL;
+ } else if (currentMonth.compareTo(Month.JULY) >= 0 && currentMonth.compareTo(Month.SEPTEMBER) <= 0) {
+ return Month.JULY;
+ } else {
+ return Month.OCTOBER;
+ }
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ServeCoordinateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ServeCoordinateServiceImpl.java
new file mode 100644
index 0000000..f614aa3
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ServeCoordinateServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.order.service.impl;
+
+import com.ruoyi.order.entity.ServeCoordinate;
+import com.ruoyi.order.mapper.ServeCoordinateMapper;
+import com.ruoyi.order.service.ServeCoordinateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 师傅路线经纬度信息 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Service
+public class ServeCoordinateServiceImpl extends ServiceImpl<ServeCoordinateMapper, ServeCoordinate> implements ServeCoordinateService {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ServeRecordServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ServeRecordServiceImpl.java
new file mode 100644
index 0000000..f9b11a0
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ServeRecordServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.order.service.impl;
+
+import com.ruoyi.order.entity.ServeRecord;
+import com.ruoyi.order.mapper.ServeRecordMapper;
+import com.ruoyi.order.service.ServeRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 师傅服务记录 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Service
+public class ServeRecordServiceImpl extends ServiceImpl<ServeRecordMapper, ServeRecord> implements ServeRecordService {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/WithdrawServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/WithdrawServiceImpl.java
new file mode 100644
index 0000000..bca8a9a
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/WithdrawServiceImpl.java
@@ -0,0 +1,288 @@
+package com.ruoyi.order.service.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.constant.OrderConstants;
+import com.ruoyi.common.core.constant.WechatConstants;
+import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.common.core.utils.SnowflakeIdWorker;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.order.entity.Order;
+import com.ruoyi.order.entity.Withdraw;
+import com.ruoyi.order.entity.WithdrawalSetting;
+import com.ruoyi.order.mapper.WithdrawMapper;
+import com.ruoyi.order.request.WithdrawExportRequest;
+import com.ruoyi.order.service.OrderService;
+import com.ruoyi.order.service.WithdrawService;
+import com.ruoyi.order.service.WithdrawalSettingService;
+import com.ruoyi.order.vo.MoneyQueryRequest;
+import com.ruoyi.order.vo.UserWithdrawRecordVO;
+import com.ruoyi.order.vx.HttpUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.Month;
+import java.time.Year;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 用户提现申请记录表 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-09
+ */
+@Service
+public class WithdrawServiceImpl extends ServiceImpl<WithdrawMapper, Withdraw> implements WithdrawService {
+
+ @Resource
+ private WithdrawalSettingService withdrawalSettingService;
+ @Resource
+ private OrderService orderService;
+
+ /**
+ * 雪花算法类
+ */
+ private static final SnowflakeIdWorker SNOW_FLAKE_ID_WORKER = new SnowflakeIdWorker(5, 5);
+
+ /**
+ * 小程序id
+ */
+ @Value("wx.appid")
+ private String appId;
+ /**
+ * 转账名称
+ */
+ @Value("wx.batchName")
+ private String batchName;
+ /**
+ * 商户号
+ */
+ @Value("wx.mchId")
+ private String mchId;
+ /**
+ * 支付证书序列号
+ */
+ @Value("wx.wechatPayserialNo")
+ private String wechatPayserialNo;
+ /**
+ * 转账备注
+ */
+ @Value("wx.transferRemark")
+ private String transferRemark;
+
+ @Override
+ public Page<UserWithdrawRecordVO> withdrawPage(String nickname, String userPhone, String applyForTime, Integer state, Page<UserWithdrawRecordVO> page) {
+ return baseMapper.withdrawPage(nickname, userPhone, applyForTime, state, page);
+ }
+
+ @Override
+ public List<UserWithdrawRecordVO> excelExport(WithdrawExportRequest exportRequest) {
+ String nickname = exportRequest.getNickname();
+ String userPhone = exportRequest.getUserPhone();
+ String applyForTime = exportRequest.getApplyForTime();
+ Integer state = exportRequest.getState();
+ List<String> ids = exportRequest.getIdList();
+ // 结果封装
+ List<UserWithdrawRecordVO> list;
+ if (null != ids && !ids.isEmpty()) {
+ list = baseMapper.exportByIdList(ids);
+ } else {
+ list = baseMapper.exportList(nickname, userPhone, applyForTime, state);
+ }
+ return list;
+ }
+
+ @Override
+ public Boolean confirmWithdraw(String openId, Integer userId, Order order) {
+ // 校验提现
+ List<Withdraw> list = this.lambdaQuery().eq(Withdraw::getUserId, userId)
+ .eq(Withdraw::getOrderId, order.getId()).list();
+ List<Integer> stateList = list.stream().map(Withdraw::getState).collect(Collectors.toList());
+ if (stateList.contains(Constants.ONE)) {
+ throw new GlobalException("当前订单提现申请已通过!");
+ }
+ return weChatPay(order.getOrderMoney(), openId);
+ }
+
+ @Override
+ public BigDecimal withdrawalTotalMoney(MoneyQueryRequest request) {
+ List<String> cityList = request.getCityList();
+ String type = request.getType();
+ // 计算当前季度时间所包含时间
+ int currentYear = Year.now().getValue();
+ // 获取当前月份
+ Month currentMonth = LocalDate.now().getMonth();
+ // 计算当前季度的开始时间和结束时间
+ LocalDate startDate = LocalDate.of(currentYear, getStartMonthOfQuarter(currentMonth), 1);
+ LocalDate endDate = startDate.plusMonths(2).with(TemporalAdjusters.lastDayOfMonth());
+ String startDateStr = String.valueOf(startDate);
+ String endDateStr = String.valueOf(endDate);
+ BigDecimal withdrawalTotalMoney;
+ if (OrderConstants.QUARTER.equals(type)) {
+ // 用户提现总额
+ withdrawalTotalMoney = baseMapper.withdrawalTotalMoney(cityList, startDateStr, endDateStr);
+ } else if (OrderConstants.YEAR.equals(type)) {
+ // 用户提现总额
+ withdrawalTotalMoney = baseMapper.withdrawalTotalMoneyByYear(cityList);
+ } else if (OrderConstants.MONTH.equals(type)) {
+ // 用户提现总额
+ withdrawalTotalMoney = baseMapper.withdrawalTotalMoneyByMonth(cityList);
+ } else {
+ // 数量初始化
+ withdrawalTotalMoney = BigDecimal.ZERO;
+ }
+ return withdrawalTotalMoney;
+ }
+
+ @Override
+ public Boolean enableProcess(Integer enableProcess) {
+ Integer[] state = {0, 1};
+ boolean contains = Arrays.stream(state).collect(Collectors.toList()).contains(enableProcess);
+ if (!contains) {
+ throw new GlobalException("系统设置关闭/开启审核状态异常!");
+ }
+ return withdrawalSettingService.lambdaUpdate().set(WithdrawalSetting::getEnableProcess, enableProcess)
+ .update();
+ }
+
+ @Override
+ public WithdrawalSetting withdrawProcess() {
+ return withdrawalSettingService.lambdaQuery().one();
+ }
+
+ @Override
+ public Page<UserWithdrawRecordVO> withdrawList(Integer userId, Page<UserWithdrawRecordVO> page) {
+ return baseMapper.withdrawList(userId, page);
+ }
+
+ @Override
+ public Boolean confirmWithdrawByUser(String orderId, Integer userId, String openId, String userPhone) {
+ Order order = orderService.lambdaQuery()
+ .eq(Order::getId, orderId)
+ .eq(Order::getIsDelete, 0).one();
+ if (null == order) {
+ throw new GlobalException("订单信息异常!");
+ }
+ // 校验提现
+ List<Withdraw> list = this.lambdaQuery().eq(Withdraw::getUserId, userId)
+ .eq(Withdraw::getOrderId, orderId).list();
+ List<Integer> stateList = list.stream().map(Withdraw::getState).collect(Collectors.toList());
+ if (stateList.contains(Constants.ZERO)) {
+ throw new GlobalException("当前订单已提交提现申请,请等待审核!");
+ } else if (stateList.contains(Constants.ONE)) {
+ throw new GlobalException("当前订单已完成提现,请勿重复提现!");
+ }
+ // 系统审核设置
+ WithdrawalSetting withdrawalSetting = withdrawalSettingService.lambdaQuery().one();
+ Withdraw withdraw = new Withdraw();
+ // 未开启全局 提现审核,则用户提现不需要后台审核
+ if (Constants.ZERO.equals(withdrawalSetting.getEnableProcess())) {
+ // 已通过
+ withdraw.setState(Constants.ONE);
+ // 商家微信打款至微信零钱
+ boolean update = weChatPay(order.getOrderMoney(), openId);
+ if (!update) {
+ throw new GlobalException("交易提现失败,请检查是否绑定微信!");
+ }
+ } else {
+ // 待审核
+ withdraw.setState(Constants.ZERO);
+ }
+ withdraw.setUserId(userId);
+ withdraw.setUserPhone(userPhone);
+ withdraw.setApplyForTime(new Date());
+ withdraw.setApplyForMoney(order.getOrderMoney());
+ withdraw.setOrderId(orderId);
+ return this.save(withdraw);
+ }
+
+ private boolean weChatPay(BigDecimal orderMoney, String openId) {
+ if (StringUtils.isBlank(openId)) {
+ return false;
+ }
+ Map<String, Object> postMap = new HashMap<>(8);
+ // 小程序 id
+ postMap.put(WechatConstants.APP_ID, appId);
+ postMap.put(WechatConstants.OUT_BATCH_NO, String.valueOf(UUID.randomUUID()).replaceAll("-", ""));
+ // 该笔批量转账的名称
+ postMap.put(WechatConstants.BATCH_NAME, batchName);
+ // 转账说明,UTF8编码,最多允许32个字符
+ postMap.put(WechatConstants.BATCH_REMARK, batchName);
+ // 转账金额单位为“分”。 总金额
+ postMap.put(WechatConstants.TOTAL_AMOUNT, orderMoney.multiply(new BigDecimal(Constants.ONE_HUNDRED)));
+ // 转账总笔数
+ postMap.put(WechatConstants.TOTAL_NUM, Constants.ONE);
+ List<Map<String, Object>> list = new ArrayList<>();
+ Map<String, Object> subMap = new HashMap<>(4);
+ // 商家明细单号 该商家下唯一
+ // subMap.put("out_detail_no", RandomUtil.randomString(32))
+ subMap.put(WechatConstants.OUT_DETAIL_NO, SNOW_FLAKE_ID_WORKER.nextId());
+ // 转账金额
+ subMap.put(WechatConstants.TRANSFER_AMOUNT, orderMoney);
+ // 转账备注
+ subMap.put(WechatConstants.TRANSFER_REMARK, transferRemark);
+ // 用户在直连商户应用下的用户标示
+ subMap.put(WechatConstants.OPEN_ID, openId);
+ // 大金额需要传入真实姓名
+ /*subMap.put("user_name",
+ RsaCryptoUtil.encryptOAEP(userName,WechatPayV3Util.getSaveCertificates(privatekeypath)))*/
+ list.add(subMap);
+ postMap.put(WechatConstants.TRANSFER_DETAIL_LIST, list);
+ // 使用类加载器获取资源 URL
+ ClassPathResource classPathResource = new ClassPathResource("vx/apiclient_key.pem");
+ /*// 获取 resources 目录下的文件路径,假设文件路径为 "resources/data/example.txt"
+ String filePath = "resources/data/vx/apiclient_key.pem";
+ File file = new File(filePath);
+ // 输出文件的绝对路径
+ String absolutePath = file.getAbsolutePath();*/
+ String result = HttpUtil.postTransBatRequest(
+ WechatConstants.WE_CHAT_URL_PRE,
+ JSONObject.toJSONString(postMap),
+ // 支付证书序列号
+ wechatPayserialNo,
+ // 商户号
+ mchId,
+ classPathResource.getPath(), WechatConstants.WE_CHAT_URL_SUF);
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ /*
+ * 成功示例
+ * {
+ * "out_batch_no": "plfk2020042013",
+ * "batch_id": "1030000071100999991182020050700019480001",
+ * "create_time": "2015-05-20T13:29:35.120+08:00"
+ * }
+ */
+ if (null == jsonObject || null != jsonObject.get(WechatConstants.CREATE_TIME)) {
+ //转账成功
+ return Boolean.TRUE;
+ } else {
+ return Boolean.FALSE;
+ }
+ }
+
+ /**
+ * 根据当前月份获取当前季度的开始月份
+ */
+ private static Month getStartMonthOfQuarter(Month currentMonth) {
+ if (currentMonth.compareTo(Month.JANUARY) >= 0 && currentMonth.compareTo(Month.MARCH) <= 0) {
+ return Month.JANUARY;
+ } else if (currentMonth.compareTo(Month.APRIL) >= 0 && currentMonth.compareTo(Month.JUNE) <= 0) {
+ return Month.APRIL;
+ } else if (currentMonth.compareTo(Month.JULY) >= 0 && currentMonth.compareTo(Month.SEPTEMBER) <= 0) {
+ return Month.JULY;
+ } else {
+ return Month.OCTOBER;
+ }
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/WithdrawalSettingServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/WithdrawalSettingServiceImpl.java
new file mode 100644
index 0000000..bbcb14d
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/WithdrawalSettingServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.order.service.impl;
+
+import com.ruoyi.order.entity.WithdrawalSetting;
+import com.ruoyi.order.mapper.WithdrawalSettingMapper;
+import com.ruoyi.order.service.WithdrawalSettingService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 审核管理全局设置 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Service
+public class WithdrawalSettingServiceImpl extends ServiceImpl<WithdrawalSettingMapper, WithdrawalSetting> implements WithdrawalSettingService {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluateInfoVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluateInfoVO.java
new file mode 100644
index 0000000..d15a50a
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluateInfoVO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.order.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 9:59
+ */
+@Data
+public class EvaluateInfoVO {
+
+ @ApiModelProperty("评价内容")
+ private String content;
+
+ @ApiModelProperty("评价星级")
+ private Integer starRating;
+
+ @ApiModelProperty("评价时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date evaluateTime;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluateOrderInfoVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluateOrderInfoVO.java
new file mode 100644
index 0000000..ece2684
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluateOrderInfoVO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.order.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 9:54
+ */
+@Data
+public class EvaluateOrderInfoVO {
+
+ @ApiModelProperty("订单id")
+ private String orderId;
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("回收服务名称")
+ private String serveName;
+
+ @ApiModelProperty("服务描述")
+ private String serveDescribe;
+
+ @ApiModelProperty("封面图片")
+ private String cover;
+
+ @ApiModelProperty("服务人员名称")
+ private String serverName;
+
+ @ApiModelProperty("服务人员手机号")
+ private String serverPhone;
+
+ @ApiModelProperty("订单完成时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date completeTime;
+
+ @ApiModelProperty("回收服务id")
+ private Integer serveId;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluatePageVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluatePageVO.java
new file mode 100644
index 0000000..c40fbd8
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EvaluatePageVO.java
@@ -0,0 +1,78 @@
+package com.ruoyi.order.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-01 12:57
+ */
+@Data
+public class EvaluatePageVO {
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ @ApiModelProperty("用户手机号")
+ @TableField("user_phone")
+ private String userPhone;
+
+ @ApiModelProperty("订单id")
+ @TableField("order_id")
+ private String orderId;
+
+ @ApiModelProperty("评价内容")
+ @TableField("content")
+ private String content;
+
+ @ApiModelProperty("评价师傅id")
+ @TableField("worker_id")
+ private Integer workerId;
+
+ @ApiModelProperty("评价星级")
+ @TableField("star_rating")
+ private Double starRating;
+
+ @ApiModelProperty("服务单号")
+ @TableField("serve_no")
+ private String serveNo;
+
+ @TableField("createBy")
+ private String createBy;
+
+ @TableField("updateBy")
+ private String updateBy;
+
+ @TableField("createTime")
+ private Date createTime;
+
+ @TableField("updateTime")
+ private Date updateTime;
+
+ @ApiModelProperty("是否删除 0未删除;1已删除")
+ @TableField("is_delete")
+ private Integer isDelete;
+
+ @ApiModelProperty("用户ID(昵称)")
+ private String userNo;
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("师傅姓名")
+ private String workerName;
+
+ @ApiModelProperty("师傅电话")
+ private String workerPhone;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MoneyQueryRequest.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MoneyQueryRequest.java
new file mode 100644
index 0000000..cdacbf4
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/MoneyQueryRequest.java
@@ -0,0 +1,19 @@
+package com.ruoyi.order.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-08 18:45
+ */
+@Data
+public class MoneyQueryRequest {
+
+ private List<String> cityList;
+
+ private String type;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByEvaluateVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByEvaluateVO.java
new file mode 100644
index 0000000..946c6ea
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByEvaluateVO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.order.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 16:50
+ */
+@Data
+@ApiModel(value = "OrderByEvaluate对象", description = "订单评价信息")
+public class OrderByEvaluateVO {
+
+ @ApiModelProperty("评价星级")
+ private BigDecimal starRating;
+
+ @ApiModelProperty("评价时间")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date evaluateTime;
+
+ @ApiModelProperty("评价内容")
+ private String evaluateContent;
+
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByServeRecordVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByServeRecordVO.java
new file mode 100644
index 0000000..d38a0e8
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByServeRecordVO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.order.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 16:36
+ */
+@Data
+@ApiModel(value = "OrderByServeRecord对象", description = "服务记录信息")
+public class OrderByServeRecordVO {
+
+ @ApiModelProperty("接单时间")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date acceptOrderTime;
+
+ @ApiModelProperty("上门时间")
+ private String reachTime;
+
+ @ApiModelProperty("路线经纬度集合")
+ private List<String> coordinate;
+
+ @ApiModelProperty("现场照片集合")
+ private List<String> photo;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByServeVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByServeVO.java
new file mode 100644
index 0000000..e6bfea6
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByServeVO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 16:17
+ */
+@Data
+@ApiModel(value = "OrderByServeVO", description = "服务信息")
+public class OrderByServeVO {
+
+ @ApiModelProperty("服务名称")
+ private String serveName;
+
+ @ApiModelProperty("一级分类")
+ private String supClassify;
+
+ @ApiModelProperty("二级分类")
+ private String subClassify;
+
+ @ApiModelProperty("回收价格")
+ private BigDecimal price;
+
+ @ApiModelProperty("封面图片")
+ private String cover;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByUserInfoVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByUserInfoVO.java
new file mode 100644
index 0000000..ed99d12
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByUserInfoVO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 16:14
+ */
+@Data
+@ApiModel(value = "OrderByUserInfoVO对象", description = "预约人信息")
+public class OrderByUserInfoVO {
+
+ @ApiModelProperty("头像")
+ private String profilePicture;
+
+ @ApiModelProperty("用户ID")
+ private String userNumber;
+
+ @ApiModelProperty("预约姓名")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ private String reservationPhone;
+
+ @ApiModelProperty("预约地址")
+ private String reservationAddress;
+
+ @ApiModelProperty("预约上门时间")
+ private String time;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByWorkerVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByWorkerVO.java
new file mode 100644
index 0000000..dcd913f
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderByWorkerVO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 16:19
+ */
+@Data
+@ApiModel(value = "OrderByWorker对象", description = "师傅信息")
+public class OrderByWorkerVO {
+
+ @ApiModelProperty("头像")
+ private String profilePicture;
+
+ @ApiModelProperty("师傅姓名")
+ private String name;
+
+ @ApiModelProperty("师傅联系电话")
+ private String phone;
+
+ @ApiModelProperty("师傅性别")
+ private String sex;
+
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountRequest.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountRequest.java
new file mode 100644
index 0000000..aae6095
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountRequest.java
@@ -0,0 +1,35 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-30 15:42
+ */
+@Data
+@ApiModel(value = "orderCount对象", description = "回收订单统计返回类")
+public class OrderCountRequest {
+
+ @ApiModelProperty("所选城市id集合")
+ private List<String> cityList;
+
+ @ApiModelProperty("查询订单状态(全部订单:该字段不传值;其他状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派))")
+ private Integer orderState;
+
+ @ApiModelProperty("统计类型(全年:year;本月:month;本周:week;今日:today)")
+ @NotBlank(message = "请选择:统计类型!")
+ private String countType;
+
+ @ApiModelProperty("开始日期(yyyy-MM-dd格式)")
+ private String startTime;
+
+ @ApiModelProperty("结束日期(yyyy-MM-dd格式)")
+ private String endTime;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountVO.java
new file mode 100644
index 0000000..8478482
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderCountVO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 17:37
+ */
+@Data
+@ApiModel(value = "OrderCountVO对象", description = "订单统计返回类")
+public class OrderCountVO {
+
+ @ApiModelProperty("师傅id")
+ private Integer workerId;
+
+ @ApiModelProperty("真实姓名")
+ private String realName;
+
+ @ApiModelProperty("头像")
+ private String profilePicture;
+
+ @ApiModelProperty("待完工数量")
+ private Integer toBeCompletedNumber;
+
+ @ApiModelProperty("已完工数量")
+ private Integer completedNumber;
+
+ @ApiModelProperty("再投单数量")
+ private Integer reInvestment;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
new file mode 100644
index 0000000..a9dd377
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.order.vo;
+
+import com.ruoyi.order.entity.Evaluate;
+import com.ruoyi.order.entity.Order;
+import com.ruoyi.order.entity.ServeRecord;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-06 14:16
+ */
+@Data
+public class OrderDetailVO {
+
+ @ApiModelProperty("订单信息")
+ private Order orderInfo;
+
+ @ApiModelProperty("服务信息")
+ private ServeRecord serveInfo;
+
+ @ApiModelProperty("评价信息")
+ private Evaluate evaluateInfo;
+
+ public OrderDetailVO() {
+ }
+
+ public OrderDetailVO(Order orderInfo, ServeRecord serveInfo, Evaluate evaluateInfo) {
+ this.orderInfo = orderInfo;
+ this.serveInfo = serveInfo;
+ this.evaluateInfo = evaluateInfo;
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderEvaluateVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderEvaluateVO.java
new file mode 100644
index 0000000..d626c62
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderEvaluateVO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 9:53
+ */
+@Data
+public class OrderEvaluateVO {
+
+ @ApiModelProperty("订单信息")
+ private EvaluateOrderInfoVO orderInfo;
+
+ @ApiModelProperty("评价信息")
+ private EvaluateInfoVO evaluateInfo;
+
+ @ApiModelProperty("是否还未评价")
+ private Boolean evaluate;
+
+ public Boolean getEvaluate() {
+ return null != evaluateInfo;
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVO.java
new file mode 100644
index 0000000..eb781c3
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.order.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 16:11
+ */
+@Data
+@ApiModel(value = "订单信息", description = "订单信息返回")
+public class OrderInfoVO {
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("下单时间")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date placeOrderTime;
+
+ @ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派)")
+ private Integer state;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageCountVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageCountVO.java
new file mode 100644
index 0000000..33d1a4e
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageCountVO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-28 16:13
+ */
+@Data
+public class OrderPageCountVO {
+
+ @ApiModelProperty("全部订单")
+ private Integer total;
+
+ @ApiModelProperty("待派单")
+ private Integer toBeDispatched;
+
+ @ApiModelProperty("待上门")
+ private Integer stayDoorstep;
+
+ @ApiModelProperty("待完成")
+ private Integer toBeCompleted;
+
+ @ApiModelProperty("已完成")
+ private Integer completed;
+
+ @ApiModelProperty("已取消")
+ private Integer canceled;
+
+ @ApiModelProperty("再投订单")
+ private Integer reInvestment;
+
+ public OrderPageCountVO(Integer total, Integer toBeDispatched, Integer stayDoorstep, Integer toBeCompleted,
+ Integer completed, Integer canceled, Integer reInvestment) {
+ this.total = total;
+ this.toBeDispatched = toBeDispatched;
+ this.stayDoorstep = stayDoorstep;
+ this.toBeCompleted = toBeCompleted;
+ this.completed = completed;
+ this.canceled = canceled;
+ this.reInvestment = reInvestment;
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderQueryRequest.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderQueryRequest.java
new file mode 100644
index 0000000..b8a6b5a
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderQueryRequest.java
@@ -0,0 +1,64 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 11:27
+ */
+@Data
+@ApiModel(value = "OrderQueryRequest对象", description = "订单列表 请求参数")
+public class OrderQueryRequest {
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("所属城市")
+ private String cityName;
+
+ @ApiModelProperty("预约姓名")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ private String reservationPhone;
+
+ @ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派)")
+ private Integer state;
+
+ @ApiModelProperty("师傅名称")
+ private String workerName;
+
+ @ApiModelProperty("师傅电话")
+ private String workerPhone;
+
+ @ApiModelProperty("下单开始时间")
+ private String orderTimeStart;
+
+ @ApiModelProperty("下单结束时间")
+ private String orderTimeEnd;
+
+ @ApiModelProperty("预约上门开始时间")
+ private String startTime;
+
+ @ApiModelProperty("预约上门结束时间")
+ private String endTime;
+
+ @ApiModelProperty("站点名称")
+ private String serveName;
+
+ @ApiModelProperty(value = "页码", required = true)
+ private Integer pageNum = 1;
+
+ @ApiModelProperty(value = "每页显示条数", required = true)
+ private Integer pageSize = 10;
+
+ @ApiModelProperty("导出ids集合")
+ private List<String> ids;
+
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderQueryVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderQueryVO.java
new file mode 100644
index 0000000..ee889c9
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderQueryVO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-30 16:30
+ */
+@Data
+@ApiModel(value = "OrderQuery对象", description = "回收订单统计查询类")
+public class OrderQueryVO {
+
+ @ApiModelProperty("对应总金额")
+ private BigDecimal totalPrice;
+
+ @ApiModelProperty("时间日期")
+ private String dateTime;
+
+ @ApiModelProperty("订单数量")
+ private Integer number;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderResultVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderResultVO.java
new file mode 100644
index 0000000..aed233e
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderResultVO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-30 16:30
+ */
+@Data
+@ApiModel(value = "OrderResultVO对象", description = "回收订单统计查询类")
+public class OrderResultVO {
+
+ @ApiModelProperty("订单总额")
+ private BigDecimal orderTotalMoney;
+
+ @ApiModelProperty("订单总数量")
+ private Integer orderTotalNumber;
+
+ @ApiModelProperty("柱状图数据")
+ private List<OrderQueryVO> orderList;
+
+ public OrderResultVO() {
+ }
+
+ public OrderResultVO(BigDecimal orderTotalMoney, Integer orderTotalNumber, List<OrderQueryVO> orderList) {
+ this.orderTotalMoney = orderTotalMoney;
+ this.orderTotalNumber = orderTotalNumber;
+ this.orderList = orderList;
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/UserWithdrawRecordVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/UserWithdrawRecordVO.java
new file mode 100644
index 0000000..ecc03d5
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/UserWithdrawRecordVO.java
@@ -0,0 +1,72 @@
+package com.ruoyi.order.vo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ruoyi.common.core.constant.Constants;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-05-31 10:40
+ */
+@Data
+@ApiModel(value = "UserWithdrawRecordVO对象", description = "用户提现记录信息")
+public class UserWithdrawRecordVO {
+
+ @TableId("id")
+ private Integer id;
+
+ @ApiModelProperty("用户id")
+ private Integer userId;
+
+ @ApiModelProperty("用户手机号")
+ private String userPhone;
+
+ @ApiModelProperty("申请时间")
+ private Date applyForTime;
+
+ @ApiModelProperty("申请金额")
+ private BigDecimal applyForMoney;
+
+ @ApiModelProperty("申请状态 0待审核;1已通过;2已驳回")
+ private Integer state;
+
+ @ApiModelProperty("审批意见")
+ private String opinions;
+
+ @ApiModelProperty("用户编号")
+ private String userNo;
+
+ @ApiModelProperty("用户昵称")
+ private String nickname;
+
+ @ApiModelProperty("头像")
+ private String profilePicture;
+
+ /**
+ * 申请状态中文(导出用) 0待审核;1已通过;2已驳回
+ *
+ * @return 中文状态
+ */
+ public String getStateStr() {
+ if (null == state) {
+ return "未知";
+ } else {
+ if (Constants.AUDIT_NUMBER.equals(state)) {
+ return Constants.AUDIT_STR;
+ } else if (Constants.PASS_THROUGH_NUMBER.equals(state)) {
+ return Constants.PASS_THROUGH_STR;
+ } else if (Constants.REJECT_NUMBER.equals(state)) {
+ return Constants.REJECT_STR;
+ } else {
+ return "未知";
+ }
+ }
+ }
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawDetailVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawDetailVO.java
new file mode 100644
index 0000000..7f13eac
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawDetailVO.java
@@ -0,0 +1,97 @@
+package com.ruoyi.order.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-09 18:10
+ */
+@Data
+public class WithdrawDetailVO {
+
+ @ApiModelProperty("订单id")
+ private String orderId;
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("下单用户id")
+ private Integer userId;
+
+ @ApiModelProperty("回收服务id")
+ private Integer serveId;
+
+ @ApiModelProperty("回收服务名称")
+ private String serveName;
+
+ @ApiModelProperty("回收服务回收价")
+ private BigDecimal servePrice;
+
+ @ApiModelProperty("订单成交价(服务回收价 + 津贴)")
+ private BigDecimal orderMoney;
+
+ @ApiModelProperty("预约姓名")
+ private String reservationName;
+
+ @ApiModelProperty("预约手机号")
+ private String reservationPhone;
+
+ @ApiModelProperty("预约地址")
+ private String reservationAddress;
+
+ @ApiModelProperty("预约上门时间段")
+ private String time;
+
+ @ApiModelProperty("接单时间(师傅接单或后台派单,更新该字段时间)")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date acceptTime;
+
+ @ApiModelProperty("服务人员id")
+ private Integer serverId;
+
+ @ApiModelProperty("服务人员名称")
+ private String serverName;
+
+ @ApiModelProperty("服务人员手机号")
+ private String serverPhone;
+
+ @ApiModelProperty("预约备注")
+ private String reservationRemark;
+
+ @ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派)")
+ private Integer state;
+
+ @ApiModelProperty("师傅到达预约地点时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date arriveTime;
+
+ @ApiModelProperty("订单完成时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date completeTime;
+
+ @ApiModelProperty("订单补贴金额")
+ private BigDecimal subsidy;
+
+ @ApiModelProperty("是否已提现(0:未提现,1:已提现)")
+ private Integer isWithdrawal;
+
+ @ApiModelProperty("提现申请状态(0待审核;1已通过;2已驳回)")
+ private Integer withdrawalState;
+
+ @ApiModelProperty("提现申请时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
+ private Date withdrawalTime;
+
+ @ApiModelProperty("详细地址")
+ private String address;
+
+ @ApiModelProperty("现场照片(多张照片 ','隔开)")
+ private String photo;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawListVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawListVO.java
new file mode 100644
index 0000000..5a70407
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawListVO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 11:27
+ */
+@Data
+public class WithdrawListVO {
+
+ @ApiModelProperty("提现金额统计")
+ private WithdrawMoneyVO moneyCount;
+
+ @ApiModelProperty("提现订单列表")
+ private List<WithdrawOrderVO> withdrawOrder;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawMoneyVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawMoneyVO.java
new file mode 100644
index 0000000..851075b
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawMoneyVO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 9:22
+ */
+@Data
+public class WithdrawMoneyVO {
+
+ @ApiModelProperty("提现金额总计")
+ private BigDecimal total;
+
+ @ApiModelProperty("已提现金额")
+ private BigDecimal withdraw;
+
+ @ApiModelProperty("未提现金额")
+ private BigDecimal undelivered;
+
+ public WithdrawMoneyVO(BigDecimal total, BigDecimal withdraw, BigDecimal undelivered) {
+ this.total = total;
+ this.withdraw = withdraw;
+ this.undelivered = undelivered;
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawOrderVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawOrderVO.java
new file mode 100644
index 0000000..e11e1b3
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawOrderVO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-06-11 11:28
+ */
+@Data
+public class WithdrawOrderVO {
+
+ @ApiModelProperty("订单id")
+ private String orderId;
+
+ @ApiModelProperty("订单编号")
+ private String orderNumber;
+
+ @ApiModelProperty("回收服务id")
+ private Integer serveId;
+
+ @ApiModelProperty("回收服务名称")
+ private String serveName;
+
+ @ApiModelProperty("服务描述")
+ private String serveDescribe;
+
+ @ApiModelProperty("封面图片")
+ private String cover;
+
+ @ApiModelProperty("订单完成时间")
+ private Date completeTime;
+
+ @ApiModelProperty("是否已提现(0:未提现,1:已提现)")
+ private Integer isWithdrawal;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawReturnVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawReturnVO.java
new file mode 100644
index 0000000..d10d72e
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WithdrawReturnVO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.order.vo;
+
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-08 18:37
+ */
+@Data
+public class WithdrawReturnVO {
+
+ private String orderId;
+
+ private Integer userId;
+
+ public WithdrawReturnVO(String orderId, Integer userId) {
+ this.orderId = orderId;
+ this.userId = userId;
+ }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WorkerOrderCountVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WorkerOrderCountVO.java
new file mode 100644
index 0000000..fd2f44e
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WorkerOrderCountVO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-09 16:11
+ */
+@Data
+public class WorkerOrderCountVO {
+
+ @ApiModelProperty("总订单数")
+ private Integer total;
+
+ @ApiModelProperty("待上门订单数")
+ private Integer waitVisit;
+
+ @ApiModelProperty("已完结订单数")
+ private Integer completed;
+
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WorkerOrderRankVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WorkerOrderRankVO.java
new file mode 100644
index 0000000..8a1186f
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/WorkerOrderRankVO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.order.vo;
+
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-09 10:12
+ */
+@Data
+public class WorkerOrderRankVO {
+
+ private Integer workerId;
+
+ private Integer orderNumber;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/HttpUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/HttpUtil.java
new file mode 100644
index 0000000..41ea4de
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/HttpUtil.java
@@ -0,0 +1,195 @@
+package com.ruoyi.order.vx;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+
+import java.io.IOException;
+
+import static com.wechat.pay.contrib.apache.httpclient.constant.WechatPayHttpHeaders.WECHAT_PAY_SERIAL;
+import static org.apache.http.HttpHeaders.ACCEPT;
+import static org.apache.http.HttpHeaders.CONTENT_TYPE;
+import static org.apache.http.entity.ContentType.APPLICATION_JSON;
+
+
+/**
+ * 微信支付专用类 请求操作方法
+ *
+ * @author hjl
+ */
+@Slf4j
+public class HttpUtil {
+
+ /**
+ * 发起批量转账API 批量转账到零钱
+ *
+ * @param requestUrl 请求路径
+ * @param requestJson 组合参数
+ * @param wechatPayserialNo 商户证书序列号
+ * @param privatekeypath 商户私钥证书路径
+ */
+ public static String postTransBatRequest(
+ String requestUrl,
+ String requestJson,
+ String wechatPayserialNo,
+ String mchId,
+ String privatekeypath, String url) {
+ CloseableHttpResponse response;
+ HttpEntity entity;
+ CloseableHttpClient httpClient = null;
+ try {
+ HttpPost httpPost = createHttpPost(requestUrl, requestJson, wechatPayserialNo, mchId, privatekeypath, url);
+ httpClient = HttpClients.createDefault();
+ //发起转账请求
+ response = httpClient.execute(httpPost);
+ log.info("response:{}", response);
+ //获取返回的数据
+ entity = response.getEntity();
+ log.info("-----getHeaders.Request-ID:" + response.getHeaders("Request-ID"));
+ return EntityUtils.toString(entity);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ // 关闭流
+ try {
+ if (httpClient != null) {
+ httpClient.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * 账单查询
+ *
+ * @param requestUrl 请求完整地址
+ * @param wechatPayserialNo 商户证书序列号
+ * @param privatekeypath 商户私钥证书路径
+ */
+ public static String getTransBatRequest(
+ String requestUrl,
+ String wechatPayserialNo,
+ String mchId,
+ String privatekeypath, String url) {
+ CloseableHttpResponse response;
+ HttpEntity entity;
+ CloseableHttpClient httpClient = null;
+ try {
+ HttpGet httpPost = createHttpGet(requestUrl, wechatPayserialNo, mchId, privatekeypath, url);
+ httpClient = HttpClients.createDefault();
+ //发起转账请求
+ response = httpClient.execute(httpPost);
+ log.info("response:{}", response);
+ //获取返回的数据
+ entity = response.getEntity();
+ log.info("-----getHeaders.Request-ID:" + response.getHeaders("Request-ID"));
+ return EntityUtils.toString(entity);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ // 关闭流
+ try {
+ if (httpClient != null) {
+ httpClient.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @param requestUrl 请求完整地址
+ * @param requestJson 请求参数
+ * @param wechatPayserialNo 支付证书序列号
+ * @param mchId 商户号
+ * @param privatekeypath 私钥路径
+ * @param servletPath 相对路径
+ */
+ private static HttpPost createHttpPost(String requestUrl,
+ String requestJson,
+ String wechatPayserialNo,
+ String mchId,
+ String privatekeypath, String servletPath) {
+ //商户私钥证书
+ HttpPost httpPost = new HttpPost(requestUrl);
+ // NOTE: 建议指定charset=utf-8。低于4.4.6版本的HttpCore,不能正确的设置字符集,可能导致签名错误
+ httpPost.addHeader(ACCEPT, APPLICATION_JSON.toString());
+ httpPost.addHeader(CONTENT_TYPE, APPLICATION_JSON.toString());
+ //"55E551E614BAA5A3EA38AE03849A76D8C7DA735A");
+ httpPost.addHeader(WECHAT_PAY_SERIAL, wechatPayserialNo);
+
+ //-------------------------核心认证 start-----------------------------------------------------------------
+ String strToken = null;
+ try {
+ log.info("requestJson:{}", requestJson);
+ strToken = WechatPayV3Util.getToken("POST",
+ servletPath,
+ requestJson, mchId, wechatPayserialNo, privatekeypath);
+ } catch (Exception e) {
+ log.error("createHttpPost error:", e);
+ e.printStackTrace();
+ }
+ StringEntity reqEntity = new StringEntity(requestJson, APPLICATION_JSON);
+ log.info("token " + strToken);
+ // 添加认证信息
+ httpPost.addHeader("Authorization",
+ "WECHATPAY2-SHA256-RSA2048" + " "
+ + strToken);
+ //---------------------------核心认证 end---------------------------------------------------------------
+ httpPost.setEntity(reqEntity);
+ return httpPost;
+ }
+
+ /**
+ * 创建get 请求
+ *
+ * @param requestUrl 请求完整地址
+ * @param wechatPayserialNo 支付证书序列号
+ * @param mchId 商户号
+ * @param privatekeypath 私钥路径
+ * @param servletPath 相对路径 请求地址上如果有参数 则此处需要带上参数
+ * @return HttpGet
+ */
+ private static HttpGet createHttpGet(String requestUrl,
+ String wechatPayserialNo,
+ String mchId,
+ String privatekeypath, String servletPath) {
+ //商户私钥证书
+ HttpGet httpGet = new HttpGet(requestUrl);
+ // NOTE: 建议指定charset=utf-8。低于4.4.6版本的HttpCore,不能正确的设置字符集,可能导致签名错误
+ httpGet.addHeader("Content-Type", "application/json");
+ httpGet.addHeader("Accept", "application/json");
+ //"55E551E614BAA5A3EA38AE03849A76D8C7DA735A");
+ httpGet.addHeader("Wechatpay-Serial", wechatPayserialNo);
+ //-------------------------核心认证 start-----------------------------------------------------------------
+ String strToken = null;
+ try {
+ strToken = WechatPayV3Util.getToken("GET",
+ servletPath,
+ "", mchId, wechatPayserialNo, privatekeypath);
+ } catch (Exception e) {
+ log.error("createHttpGet error:", e);
+ e.printStackTrace();
+ }
+
+ log.info("token " + strToken);
+ // 添加认证信息
+ httpGet.addHeader("Authorization",
+ "WECHATPAY2-SHA256-RSA2048" + " "
+ + strToken);
+ //---------------------------核心认证 end---------------------------------------------------------------
+ return httpGet;
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/WechatPayV3Util.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/WechatPayV3Util.java
new file mode 100644
index 0000000..e3bfe45
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/WechatPayV3Util.java
@@ -0,0 +1,113 @@
+package com.ruoyi.order.vx;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.binary.Base64;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.Signature;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.Random;
+
+/**
+ * @author HJL
+ */
+@Slf4j
+public class WechatPayV3Util {
+
+
+ /**
+ * @param method 请求方法 post
+ * @param canonicalUrl 请求地址
+ * @param body 请求参数 GET请求传空字符
+ * @param merchantId 这里用的商户号
+ * @param certSerialNo 商户证书序列号
+ * @param keyPath 私钥商户证书地址
+ */
+ public static String getToken(
+ String method,
+ String canonicalUrl,
+ String body,
+ String merchantId,
+ String certSerialNo,
+ String keyPath) throws Exception {
+ String signStr;
+ //获取32位随机字符串
+ String nonceStr = getRandomString(32);
+ //当前系统运行时间
+ long timestamp = System.currentTimeMillis() / 1000;
+ String message = buildMessage(method, canonicalUrl, timestamp, nonceStr, body);
+ //签名操作
+ //签名操作
+ String signature = sign(message.getBytes(StandardCharsets.UTF_8), keyPath);
+ //组装参数
+ signStr = "mchid=\"" + merchantId + "\"," +
+ "timestamp=\"" + timestamp + "\"," +
+ "nonce_str=\"" + nonceStr + "\"," +
+ "serial_no=\"" + certSerialNo + "\"," +
+ "signature=\"" + signature + "\"";
+
+ return signStr;
+ }
+
+ public static String buildMessage(String method, String canonicalUrl, long timestamp, String nonceStr, String body) {
+// String canonicalUrl = url.encodedPath();
+// if (url.encodedQuery() != null) {
+// canonicalUrl += "?" + url.encodedQuery();
+// }
+ return method + "\n" + canonicalUrl + "\n" + timestamp + "\n" + nonceStr + "\n" + body + "\n";
+ }
+
+ public static String sign(byte[] message, String keyPath) throws Exception {
+ Signature sign = Signature.getInstance("SHA256withRSA");
+ sign.initSign(getPrivateKey(keyPath));
+ sign.update(message);
+ return Base64.encodeBase64String(sign.sign());
+ }
+
+ /**
+ * 微信支付-前端唤起支付参数-获取商户私钥
+ *
+ * @param filename 私钥文件路径 (required)
+ * @return 私钥对象
+ */
+ public static PrivateKey getPrivateKey(String filename) throws IOException {
+ log.info("签名 证书地址是 " + filename);
+ String content = new String(Files.readAllBytes(Paths.get(filename)), StandardCharsets.UTF_8);
+ try {
+ String privateKey = content.replace("-----BEGIN PRIVATE KEY-----", "")
+ .replace("-----END PRIVATE KEY-----", "")
+ .replaceAll("\\s+", "");
+ KeyFactory kf = KeyFactory.getInstance("RSA");
+ return kf.generatePrivate(
+ new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey)));
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException("当前Java环境不支持RSA", e);
+ } catch (InvalidKeySpecException e) {
+ throw new RuntimeException("无效的密钥格式");
+ }
+ }
+
+ /**
+ * 获取随机位数的字符串
+ *
+ * @param length 需要的长度
+ */
+ public static String getRandomString(int length) {
+ String base = "abcdefghijklmnopqrstuvwxyz0123456789";
+ Random random = new Random();
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < length; i++) {
+ int number = random.nextInt(base.length());
+ sb.append(base.charAt(number));
+ }
+ return sb.toString();
+ }
+}
+
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yaml b/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yaml
new file mode 100644
index 0000000..db16003
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yaml
@@ -0,0 +1,41 @@
+# Spring
+spring:
+ application:
+ # 应用名称
+ name: ruoyi-order
+ main:
+ allow-bean-definition-overriding: true
+ profiles:
+ # 环境配置
+ active: dev
+
+---
+spring:
+ config:
+ activate:
+ on-profile: dev
+ cloud:
+ nacos:
+ discovery:
+ # 服务注册地址
+ server-addr: 127.0.0.1:8848
+ service: ${spring.application.name}
+ group: DEFAULT_GROUP
+ namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
+ config:
+ # 配置中心地址
+ server-addr: 127.0.0.1:8848
+ group: DEFAULT_GROUP
+ namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
+ name: ${spring.application.name}
+ # 配置文件格式
+ file-extension: yml
+ # 共享配置
+ shared-configs:
+ - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/logback.xml b/ruoyi-service/ruoyi-order/src/main/resources/logback.xml
new file mode 100644
index 0000000..61d523e
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/logback.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+ <!-- 日志存放路径 -->
+ <property name="log.path" value="logs/ruoyi-order" />
+ <!-- 日志输出格式 -->
+ <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+
+ <!-- 控制台输出 -->
+ <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>${log.pattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!-- 系统日志输出 -->
+ <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${log.path}/info.log</file>
+ <!-- 循环政策:基于时间创建日志文件 -->
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- 日志文件名格式 -->
+ <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
+ <!-- 日志最大的历史 60天 -->
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${log.pattern}</pattern>
+ </encoder>
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <!-- 过滤的级别 -->
+ <level>INFO</level>
+ <!-- 匹配时的操作:接收(记录) -->
+ <onMatch>ACCEPT</onMatch>
+ <!-- 不匹配时的操作:拒绝(不记录) -->
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ </appender>
+
+ <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${log.path}/error.log</file>
+ <!-- 循环政策:基于时间创建日志文件 -->
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- 日志文件名格式 -->
+ <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
+ <!-- 日志最大的历史 60天 -->
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${log.pattern}</pattern>
+ </encoder>
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <!-- 过滤的级别 -->
+ <level>ERROR</level>
+ <!-- 匹配时的操作:接收(记录) -->
+ <onMatch>ACCEPT</onMatch>
+ <!-- 不匹配时的操作:拒绝(不记录) -->
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ </appender>
+
+ <!-- 系统模块日志级别控制 -->
+ <logger name="com.ruoyi" level="info" />
+ <!-- Spring日志级别控制 -->
+ <logger name="org.springframework" level="warn" />
+
+ <root level="info">
+ <appender-ref ref="console" />
+ </root>
+
+ <!--系统操作日志-->
+ <root level="info">
+ <appender-ref ref="file_info" />
+ <appender-ref ref="file_error" />
+ </root>
+</configuration>
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml
new file mode 100644
index 0000000..6af9e13
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.order.mapper.ChangeDispatchMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.order.entity.ChangeDispatch">
+ <id column="id" property="id" />
+ <result column="worker_id" property="workerId" />
+ <result column="worker_name" property="workerName" />
+ <result column="apply_reason" property="applyReason" />
+ <result column="apply_time" property="applyTime" />
+ <result column="state" property="state" />
+ <result column="createBy" property="createBy" />
+ <result column="updateBy" property="updateBy" />
+ <result column="createTime" property="createTime" />
+ <result column="updateTime" property="updateTime" />
+ <result column="is_delete" property="isDelete" />
+ <result column="order_id" property="orderId" />
+ <result column="order_number" property="orderNumber" />
+ <result column="user_id" property="userId" />
+ <result column="user_name" property="userName" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/EvaluateMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/EvaluateMapper.xml
new file mode 100644
index 0000000..3a04bd0
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/EvaluateMapper.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.order.mapper.EvaluateMapper">
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.order.entity.Evaluate">
+ <id column="id" property="id"/>
+ <result column="user_id" property="userId"/>
+ <result column="user_phone" property="userPhone"/>
+ <result column="order_id" property="orderId"/>
+ <result column="content" property="content"/>
+ <result column="worker_id" property="workerId"/>
+ <result column="star_rating" property="starRating"/>
+ <result column="serve_no" property="serveNo"/>
+ <result column="createBy" property="createBy"/>
+ <result column="updateBy" property="updateBy"/>
+ <result column="createTime" property="createTime"/>
+ <result column="updateTime" property="updateTime"/>
+ <result column="is_delete" property="isDelete"/>
+ </resultMap>
+
+ <select id="queryPageList" resultType="com.ruoyi.order.vo.EvaluatePageVO">
+ select e.*,
+ o.reservation_name as userNo,
+ o.order_number,
+ o.server_name as workerName,
+ o.server_phone as workerPhone
+ from t_evaluate e
+ left join t_order o on e.order_id = o.id
+ <where>
+ e.is_delete = 0
+ and o.is_delete = 0
+ <if test="userName != null and userName != ''">
+ and o.reservation_name like concat('%', #{userName}, '%')
+ </if>
+ <if test="orderNumber != null and orderNumber != ''">
+ and o.order_number like concat('%', #{orderNumber}, '%')
+ </if>
+ <if test="workerName != null and workerName != ''">
+ and o.server_name like concat('%', #{workerName}, '%')
+ </if>
+ </where>
+ order by e.createTime desc
+ </select>
+
+ <resultMap id="pageMap" type="com.ruoyi.order.vo.EvaluatePageVO">
+ <id column="id" property="id"/>
+ <result column="user_id" property="userId"/>
+ <result column="user_phone" property="userPhone"/>
+ <result column="order_id" property="orderId"/>
+ <result column="content" property="content"/>
+ <result column="worker_id" property="workerId"/>
+ <result column="star_rating" property="starRating"/>
+ <result column="createBy" property="createBy"/>
+ <result column="updateBy" property="updateBy"/>
+ <result column="createTime" property="createTime"/>
+ <result column="updateTime" property="updateTime"/>
+ <result column="is_delete" property="isDelete"/>
+ <result column="reservation_name" property="userNo"/>
+ <result column="order_number" property="orderNumber"/>
+ <result column="server_name" property="workerName"/>
+ <result column="server_phone" property="workerPhone"/>
+ </resultMap>
+
+ <select id="evaluateList" resultMap="pageMap">
+ select e.*, o.reservation_name, o.order_number, o.server_name, o.server_phone
+ from t_evaluate e
+ left join t_order o on e.order_id = o.id
+ where e.is_delete = 0
+ and o.is_delete = 0
+ </select>
+
+ <resultMap id="evaluateMap" type="com.ruoyi.order.vo.OrderEvaluateVO">
+ <association property="orderInfo" javaType="com.ruoyi.order.vo.EvaluateOrderInfoVO">
+ <result column="id" property="orderId"/>
+ <result column="order_number" property="orderNumber"/>
+ <result column="complete_time" property="completeTime"/>
+ <result column="serve_name" property="serveName"/>
+ <result column="serve_describe" property="serveDescribe"/>
+ <result column="cover" property="cover"/>
+ <result column="server_name" property="serverName"/>
+ <result column="server_phone" property="serverPhone"/>
+ <result column="serve_id" property="serveId"/>
+ </association>
+ <association property="evaluateInfo" javaType="com.ruoyi.order.vo.EvaluateInfoVO">
+ <result column="content" property="content"/>
+ <result column="star_rating" property="starRating"/>
+ <result column="createTime" property="evaluateTime"/>
+ </association>
+ </resultMap>
+
+ <select id="evaluateListByUser" resultMap="evaluateMap">
+ SELECT o.id,
+ o.order_number,
+ o.complete_time,
+ o.server_name,
+ o.server_phone,
+ e.content,
+ e.star_rating,
+ e.createTime,
+ o.serve_id
+ FROM t_order o
+ LEFT JOIN t_evaluate e on o.id = e.order_id
+ <where>
+ o.user_id = #{userId}
+ <if test="state != -1">
+ and o.is_evaluate = #{state}
+ </if>
+ </where>
+ order by o.createTime desc
+ </select>
+</mapper>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
new file mode 100644
index 0000000..7de42ab
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.order.mapper.OrderMapper">
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.order.entity.Order">
+ <id column="id" property="id"/>
+ <result column="site_id" property="siteId"/>
+ <result column="order_number" property="orderNumber"/>
+ <result column="order_money" property="orderMoney"/>
+ <result column="site_name" property="siteName"/>
+ <result column="serve_id" property="serveId"/>
+ <result column="serve_name" property="serveName"/>
+ <result column="serve_price" property="servePrice"/>
+ <result column="reservation_name" property="reservationName"/>
+ <result column="reservation_phone" property="reservationPhone"/>
+ <result column="reservation_address" property="reservationAddress"/>
+ <result column="time" property="time"/>
+ <result column="server_id" property="serverId"/>
+ <result column="server_name" property="serverName"/>
+ <result column="server_phone" property="serverPhone"/>
+ <result column="reservation_remark" property="reservationRemark"/>
+ <result column="state" property="state"/>
+ <result column="createBy" property="createBy"/>
+ <result column="updateBy" property="updateBy"/>
+ <result column="createTime" property="createTime"/>
+ <result column="updateTime" property="updateTime"/>
+ <result column="is_delete" property="isDelete"/>
+ <result column="apply_reason" property="applyReason"/>
+ </resultMap>
+
+
+ <select id="orderCountByYear" resultType="com.ruoyi.order.vo.OrderQueryVO">
+ SELECT DATE_FORMAT(createTime, '%Y-%m') AS dateTime, COUNT(*) AS number, sum(serve_price) as totalPrice
+ FROM t_order
+ <where>
+ is_delete = 0
+ and YEAR(createTime) = YEAR(NOW())
+ <if test="cityList != null and cityList.size() != 0">
+ and city in
+ <foreach collection="cityList" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ <if test="orderState != null and orderState != ''">
+ and state = #{orderState}
+ </if>
+ <if test="startTime != null and startTime != ''">
+ and createTime <![CDATA[ >= ]]> #{startTime}
+ </if>
+ <if test="endTime != null and endTime != ''">
+ and createTime <![CDATA[ <= ]]> #{endTime}
+ </if>
+ </where>
+ GROUP BY dateTime
+ order by dateTime
+ </select>
+
+ <select id="orderCountByWeek" resultType="com.ruoyi.order.vo.OrderQueryVO">
+ SELECT DATE_FORMAT(createTime, '%Y-%m-%d') AS dateTime, COUNT(*) AS number, sum(serve_price) as totalPrice
+ FROM t_order
+ <where>
+ is_delete = 0
+ and YEARWEEK(DATE_FORMAT(createTime, '%Y-%m-%d')) = YEARWEEK(NOW())
+ <if test="cityList != null and cityList.size() != 0">
+ and city in
+ <foreach collection="cityList" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ <if test="orderState != null and orderState != ''">
+ and state = #{orderState}
+ </if>
+ <if test="startTime != null and startTime != ''">
+ and createTime <![CDATA[ >= ]]> #{startTime}
+ </if>
+ <if test="endTime != null and endTime != ''">
+ and createTime <![CDATA[ <= ]]> #{endTime}
+ </if>
+ </where>
+ GROUP BY dateTime
+ order by dateTime
+ </select>
+
+ <select id="orderCountByMonth" resultType="com.ruoyi.order.vo.OrderQueryVO">
+ SELECT DATE_FORMAT(createTime, '%Y-%m-%d') AS dateTime, COUNT(*) AS number, sum(serve_price) as totalPrice
+ FROM t_order
+ <where>
+ is_delete = 0
+ and MONTH(createTime) = MONTH(NOW())
+ AND YEAR(createTime) = YEAR(NOW())
+ <if test="cityList != null and cityList.size() != 0">
+ and city in
+ <foreach collection="cityList" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ <if test="orderState != null and orderState != ''">
+ and state = #{orderState}
+ </if>
+ <if test="startTime != null and startTime != ''">
+ and createTime <![CDATA[ >= ]]> #{startTime}
+ </if>
+ <if test="endTime != null and endTime != ''">
+ and createTime <![CDATA[ <= ]]> #{endTime}
+ </if>
+ </where>
+ GROUP BY dateTime
+ order by dateTime
+ </select>
+
+ <select id="orderCountByToday" resultType="com.ruoyi.order.vo.OrderQueryVO">
+ SELECT DATE_FORMAT(createTime, '%Y-%m-%d %H') AS dateTime, COUNT(*) AS number, sum(serve_price) as totalPrice
+ FROM t_order
+ <where>
+ DATE(createTime) = CURDATE()
+ <if test="cityList != null and cityList.size() != 0">
+ and city in
+ <foreach collection="cityList" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ <if test="orderState != null and orderState != ''">
+ and state = #{orderState}
+ </if>
+ <if test="startTime != null and startTime != ''">
+ and createTime <![CDATA[ >= ]]> #{startTime}
+ </if>
+ <if test="endTime != null and endTime != ''">
+ and createTime <![CDATA[ <= ]]> #{endTime}
+ </if>
+ </where>
+ GROUP BY dateTime
+ order by dateTime
+ </select>
+
+ <select id="totalMoneyByQuarter" resultType="java.math.BigDecimal">
+ select sum(order_money)
+ from t_order
+ <where>
+ is_delete = 0
+ and state = 4
+ <if test="cityList != null and cityList.size() != 0">
+ and city in
+ <foreach collection="cityList" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ <if test="start != null and start != ''">
+ and createTime <![CDATA[ >= ]]> #{start}
+ </if>
+ <if test="end != null and end != ''">
+ and createTime <![CDATA[ <= ]]> #{end}
+ </if>
+ </where>
+ </select>
+
+ <select id="totalMoneyByYear" resultType="java.math.BigDecimal">
+ SELECT sum(serve_price) as totalPrice
+ FROM t_order
+ where YEAR(createTime) = YEAR(NOW())
+ and is_delete = 0
+ and state = 4
+ <if test="cityList != null and cityList.size() != 0">
+ and city in
+ <foreach collection="cityList" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ </select>
+
+ <select id="totalMoneyByMonth" resultType="java.math.BigDecimal">
+ SELECT sum(serve_price) as totalPrice
+ FROM t_order
+ where MONTH(createTime) = MONTH(NOW())
+ AND YEAR(createTime) = YEAR(NOW())
+ and is_delete = 0
+ and state = 4
+ <if test="cityList != null and cityList.size() != 0">
+ and city in
+ <foreach collection="cityList" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ </select>
+
+ <select id="orderCount" resultType="com.ruoyi.order.vo.OrderCountVO">
+ SELECT o.server_name AS realName,
+ o.server_id as workerId,
+ SUM(CASE WHEN o.state in (1, 2) THEN 1 ELSE 0 END) AS toBeCompletedNumber,
+ SUM(CASE WHEN o.state = 3 THEN 1 ELSE 0 END) AS completedNumber,
+ SUM(CASE WHEN o.state = 6 THEN 1 ELSE 0 END) AS reInvestment
+ FROM t_order o
+ WHERE o.is_delete = 0
+ <if test="phone != null and phone != ''">
+ and o.server_phone like concat('%', #{phone}, '%')
+ </if>
+ <if test="name != null and name != ''">
+ and o.server_name like concat('%', #{name}, '%')
+ </if>
+ GROUP BY o.server_name, o.server_id
+ </select>
+
+ <select id="queryPage" resultMap="BaseResultMap">
+ select *
+ from t_order o
+ <where>
+ o.is_delete = 0
+ <if test="data.orderNumber != null and data.orderNumber != ''">
+ and o.order_number like concat('%', #{data.orderNumber}, '%')
+ </if>
+ <if test="data.cityName != null and data.cityName != ''">
+ and o.city like concat('%', #{data.cityName}, '%')
+ </if>
+ <if test="data.reservationName != null and data.reservationName != ''">
+ and o.reservation_name like concat('%', #{data.reservationName}, '%')
+ </if>
+ <if test="data.reservationPhone != null and data.reservationPhone != ''">
+ and o.reservation_phone like concat('%', #{data.reservationPhone}, '%')
+ </if>
+ <if test="data.state != null">
+ and o.state = #{data.state}
+ </if>
+ <if test="data.workerName != null and data.workerName != ''">
+ and o.server_name like concat('%', #{data.workerName}, '%')
+ </if>
+ <if test="data.workerPhone != null and data.workerPhone != ''">
+ and o.server_phone like concat('%', #{data.workerPhone}, '%')
+ </if>
+ <if test="data.serveName != null and data.serveName != ''">
+ and o.site_name like concat('%', #{data.serveName}, '%')
+ </if>
+ <if test="data.orderTimeStart != null and data.orderTimeStart != ''">
+ and DATE(o.createTime) <![CDATA[ >= ]]> #{data.orderTimeStart}
+ </if>
+ <if test="data.orderTimeEnd != null and data.orderTimeEnd != ''">
+ and DATE(o.createTime) <![CDATA[ <= ]]> #{data.orderTimeEnd}
+ </if>
+ <if test="data.startTime != null and data.startTime != ''">
+ and STR_TO_DATE(SUBSTRING_INDEX(time, ' - ', 1), '%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{data.startTime}
+ </if>
+ <if test="data.endTime != null and data.endTime != ''">
+ AND STR_TO_DATE(SUBSTRING_INDEX(time, ' - ', -1), '%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{data.endTime}
+ </if>
+ </where>
+ order by o.createTime desc
+ </select>
+
+ <select id="orderPageCount" resultMap="BaseResultMap">
+ select o.*
+ from t_order o
+ <where>
+ o.is_delete = 0
+ <if test="data.orderNumber != null and data.orderNumber != ''">
+ and o.order_number like concat('%', #{data.orderNumber}, '%')
+ </if>
+ <if test="data.cityName != null and data.cityName != ''">
+ and o.city like concat('%', #{data.cityName}, '%')
+ </if>
+ <if test="data.reservationName != null and data.reservationName != ''">
+ and o.reservation_name like concat('%', #{data.reservationName}, '%')
+ </if>
+ <if test="data.reservationPhone != null and data.reservationPhone != ''">
+ and o.reservation_phone like concat('%', #{data.reservationPhone}, '%')
+ </if>
+ <if test="data.workerName != null and data.workerName != ''">
+ and o.server_name like concat('%', #{data.workerName}, '%')
+ </if>
+ <if test="data.workerPhone != null and data.workerPhone != ''">
+ and o.server_phone like concat('%', #{data.workerPhone}, '%')
+ </if>
+ <if test="data.serveName != null and data.serveName != ''">
+ and o.serve_name like concat('%', #{data.serveName}, '%')
+ </if>
+ <if test="data.orderTimeStart != null and data.orderTimeStart != ''">
+ and DATE(o.createTime) <![CDATA[ >= ]]> #{data.orderTimeStart}
+ </if>
+ <if test="data.orderTimeEnd != null and data.orderTimeEnd != ''">
+ and DATE(o.createTime) <![CDATA[ <= ]]> #{data.orderTimeEnd}
+ </if>
+ <if test="data.startTime != null and data.startTime != ''">
+ and STR_TO_DATE(SUBSTRING_INDEX(time, ' - ', 1), '%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{data.startTime}
+ </if>
+ <if test="data.endTime != null and data.endTime != ''">
+ AND STR_TO_DATE(SUBSTRING_INDEX(time, ' - ', -1), '%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{data.endTime}
+ </if>
+ </where>
+ </select>
+
+ <select id="exportByIdList" resultMap="BaseResultMap">
+ select reservation_name,
+ reservation_phone,
+ reservation_address,
+ time,
+ serve_name,
+ server_name,
+ server_phone
+ from t_order
+ <where>
+ id in
+ <foreach collection="list" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </where>
+ </select>
+
+ <select id="exportList" resultMap="BaseResultMap">
+ select *
+ from t_order o
+ <where>
+ o.is_delete = 0
+ <if test="data.orderNumber != null and data.orderNumber != ''">
+ and o.order_number like concat('%', #{data.orderNumber}, '%')
+ </if>
+ <if test="data.cityName != null and data.cityName != ''">
+ and o.city like concat('%', #{data.cityName}, '%')
+ </if>
+ <if test="data.reservationName != null and data.reservationName != ''">
+ and o.reservation_name like concat('%', #{data.reservationName}, '%')
+ </if>
+ <if test="data.reservationPhone != null and data.reservationPhone != ''">
+ and o.reservation_phone like concat('%', #{data.reservationPhone}, '%')
+ </if>
+ <if test="data.state != null">
+ and o.state = #{data.state}
+ </if>
+ <if test="data.workerName != null and data.workerName != ''">
+ and o.server_name like concat('%', #{data.workerName}, '%')
+ </if>
+ <if test="data.workerPhone != null and data.workerPhone != ''">
+ and o.server_phone like concat('%', #{data.workerPhone}, '%')
+ </if>
+ <if test="data.serveName != null and data.serveName != ''">
+ and o.serve_name like concat('%', #{data.serveName}, '%')
+ </if>
+ <if test="data.orderTimeStart != null and data.orderTimeStart != ''">
+ and DATE(o.createTime) <![CDATA[ >= ]]> #{data.orderTimeStart}
+ </if>
+ <if test="data.orderTimeEnd != null and data.orderTimeEnd != ''">
+ and DATE(o.createTime) <![CDATA[ <= ]]> #{data.orderTimeEnd}
+ </if>
+ <if test="data.startTime != null and data.startTime != ''">
+ and STR_TO_DATE(SUBSTRING_INDEX(time, ' - ', 1), '%Y-%m-%d %H:%i') <![CDATA[ >= ]]> #{data.startTime}
+ </if>
+ <if test="data.endTime != null and data.endTime != ''">
+ AND STR_TO_DATE(SUBSTRING_INDEX(time, ' - ', -1), '%Y-%m-%d %H:%i') <![CDATA[ <= ]]> #{data.endTime}
+ </if>
+ </where>
+ order by o.createTime desc
+ </select>
+
+ <select id="orderListWorker" resultMap="BaseResultMap">
+ select o.*
+ from t_order o
+ <where>
+ o.is_delete = 0
+ and o.server_id = #{userId}
+ <choose>
+ <when test="state == 1">
+ and o.state in (1, 2)
+ </when>
+ <when test="state == 2">
+ and o.state = 3
+ </when>
+ <otherwise>
+ and o.state in (1, 2, 3)
+ </otherwise>
+ </choose>
+ </where>
+ order by o.createTime desc
+ </select>
+
+ <select id="workerOrderRank" resultType="com.ruoyi.order.vo.WorkerOrderRankVO">
+ select server_id as workerId, COUNT(server_id) as orderNumber
+ from t_order
+ <where>
+ is_delete = 0
+ <if test="ids != null and ids.size() != 0">
+ and server_id in
+ <foreach collection="ids" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ </where>
+ GROUP BY server_id
+ ORDER BY orderNumber desc
+ </select>
+
+ <select id="orderStateCount" resultType="com.ruoyi.order.vo.WorkerOrderCountVO">
+ SELECT COALESCE(SUM(CASE WHEN o.state IN (1, 2, 3) THEN 1 ELSE 0 END), 0) AS total,
+ COALESCE(SUM(CASE WHEN o.state in (1, 2) THEN 1 ELSE 0 END), 0) AS waitVisit,
+ COALESCE(SUM(CASE WHEN o.state = 3 THEN 1 ELSE 0 END), 0) AS completed
+ FROM t_order o
+ where o.server_id = #{workerId}
+ and o.is_delete = 0
+ </select>
+</mapper>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ServeCoordinateMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ServeCoordinateMapper.xml
new file mode 100644
index 0000000..ac07658
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ServeCoordinateMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.order.mapper.ServeCoordinateMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.order.entity.ServeCoordinate">
+ <id column="id" property="id" />
+ <result column="worker_id" property="workerId" />
+ <result column="order_id" property="orderId" />
+ <result column="coordinate" property="coordinate" />
+ <result column="longitude" property="longitude" />
+ <result column="latitude" property="latitude" />
+ <result column="createBy" property="createBy" />
+ <result column="updateBy" property="updateBy" />
+ <result column="createTime" property="createTime" />
+ <result column="updateTime" property="updateTime" />
+ <result column="is_delete" property="isDelete" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ServeRecordMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ServeRecordMapper.xml
new file mode 100644
index 0000000..a613e81
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ServeRecordMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.order.mapper.ServeRecordMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.order.entity.ServeRecord">
+ <id column="id" property="id" />
+ <result column="order_id" property="orderId" />
+ <result column="photo" property="photo" />
+ <result column="remark" property="remark" />
+ <result column="createBy" property="createBy" />
+ <result column="updateBy" property="updateBy" />
+ <result column="createTime" property="createTime" />
+ <result column="updateTime" property="updateTime" />
+ <result column="is_delete" property="isDelete" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/WithdrawMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/WithdrawMapper.xml
new file mode 100644
index 0000000..e0cbb07
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/WithdrawMapper.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.order.mapper.WithdrawMapper">
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.order.entity.Withdraw">
+ <id column="id" property="id"/>
+ <result column="user_id" property="userId"/>
+ <result column="user_phone" property="userPhone"/>
+ <result column="apply_for_time" property="applyForTime"/>
+ <result column="apply_for_money" property="applyForMoney"/>
+ <result column="state" property="state"/>
+ <result column="opinion" property="opinion"/>
+ <result column="createBy" property="createBy"/>
+ <result column="updateBy" property="updateBy"/>
+ <result column="createTime" property="createTime"/>
+ <result column="updateTime" property="updateTime"/>
+ <result column="is_delete" property="isDelete"/>
+ <result column="order_id" property="orderId"/>
+ </resultMap>
+
+ <select id="withdrawPage" resultMap="voMap">
+ SELECT *
+ FROM t_withdraw w
+ <where>
+ w.is_delete = 0
+ <if test="name != null and name != ''">
+ and w.nick_name like concat('%', #{name}, '%')
+ </if>
+ <if test="phone != null and phone != ''">
+ and w.user_phone like concat('%', #{phone}, '%')
+ </if>
+ <if test="time != null and time != ''">
+ and DATE(w.apply_for_time) = #{time}
+ </if>
+ <if test="state != null">
+ and w.state = #{state}
+ </if>
+ </where>
+ order by w.createTime desc
+ </select>
+
+ <!--vo类映射-->
+ <resultMap id="voMap" type="com.ruoyi.order.vo.UserWithdrawRecordVO">
+ <id column="id" property="id"/>
+ <result column="user_id" property="userId"/>
+ <result column="apply_for_time" property="applyForTime"/>
+ <result column="apply_for_money" property="applyForMoney"/>
+ <result column="state" property="state"/>
+ <result column="opinion" property="opinions"/>
+ <result column="user_no" property="userNo"/>
+ <result column="profile_picture" property="profilePicture"/>
+ <result column="nick_name" property="nickname"/>
+ <result column="user_phone" property="userPhone"/>
+ </resultMap>
+
+ <select id="exportList" resultMap="voMap">
+ SELECT *
+ FROM t_withdraw w
+ <where>
+ w.is_delete = 0
+ <if test="name != null and name != ''">
+ and w.nick_name like concat('%', #{name}, '%')
+ </if>
+ <if test="phone != null and phone != ''">
+ and w.user_phone like concat('%', #{phone}, '%')
+ </if>
+ <if test="time != null and time != ''">
+ and DATE(w.apply_for_time) = #{time}
+ </if>
+ <if test="state != null">
+ and w.state = #{state}
+ </if>
+ </where>
+ order by w.createTime desc
+ </select>
+
+ <select id="exportByIdList" resultMap="voMap">
+ SELECT *
+ FROM t_withdraw w
+ <where>
+ w.is_delete = 0
+ and w.id in
+ <foreach collection="ids" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </where>
+ order by w.createTime desc
+ </select>
+
+ <select id="withdrawalTotalMoney" resultType="java.math.BigDecimal">
+ SELECT sum(w.apply_for_money)
+ FROM t_withdraw w
+ <where>
+ w.is_delete = 0
+ <if test="start != null and start != ''">
+ and w.createTime <![CDATA[ >= ]]> #{start}
+ </if>
+ <if test="end != null and end != ''">
+ and w.createTime <![CDATA[ <= ]]> #{end}
+ </if>
+ <!--<if test="cityList != null and cityList.size() != 0">
+ and u.city in
+ <foreach collection="cityList" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>-->
+ </where>
+ </select>
+
+ <select id="withdrawalTotalMoneyByYear" resultType="java.math.BigDecimal">
+ SELECT sum(w.apply_for_money)
+ FROM t_withdraw w
+ <where>
+ YEAR(w.createTime) = YEAR(NOW())
+ and w.is_delete = 0
+ <!--<if test="cityList != null and cityList.size() != 0">
+ and u.city in
+ <foreach collection="cityList" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>-->
+ </where>
+ </select>
+
+ <select id="withdrawalTotalMoneyByMonth" resultType="java.math.BigDecimal">
+ SELECT sum(w.apply_for_money)
+ FROM t_withdraw w
+ <where>
+ YEAR(w.createTime) = YEAR(NOW())
+ AND YEAR(w.createTime) = YEAR(NOW())
+ and w.is_delete = 0
+ <!--<if test="cityList != null and cityList.size() != 0">
+ and u.city in
+ <foreach collection="cityList" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>-->
+ </where>
+ </select>
+
+ <select id="withdrawList" resultMap="voMap">
+ SELECT *
+ FROM t_withdraw w
+ <where>
+ w.is_delete = 0
+ <if test="userId != null and userId != ''">
+ and w.user_id = #{userId}
+ </if>
+ </where>
+ </select>
+</mapper>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/WithdrawalSettingMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/WithdrawalSettingMapper.xml
new file mode 100644
index 0000000..3520709
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/WithdrawalSettingMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.order.mapper.WithdrawalSettingMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.order.entity.WithdrawalSetting">
+ <id column="id" property="id" />
+ <result column="enable_process" property="enableProcess" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mybatis-config.xml b/ruoyi-service/ruoyi-order/src/main/resources/mybatis-config.xml
new file mode 100644
index 0000000..d744366
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mybatis-config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+
+ <settings>
+ <!-- 打印查询语句 不会写入到日志文件中-->
+ <setting name="logImpl" value="STDOUT_LOGGING"/>
+ <!--<setting name="logImpl" value="LOG4J" />-->
+ <!-- 控制全局缓存(二级缓存),按美团技术团队的说法,尽量别用缓存机制 emmmm.... -->
+ <setting name="cacheEnabled" value="true"/>
+ <!-- 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。默认 false -->
+ <!-- <setting name="lazyLoadingEnabled" value="true"/> -->
+ <setting name="mapUnderscoreToCamelCase" value="false"/>
+<!-- 是否将map下划线方式转为驼峰式命名-->
+ <!-- 当开启时,任何方法的调用都会加载该对象的所有属性。默认 false,可通过select标签的 fetchType来覆盖-->
+ <!-- <setting name="aggressiveLazyLoading" value="false"/>-->
+ <!-- Mybatis 创建具有延迟加载能力的对象所用到的代理工具,默认JAVASSIST -->
+ <!--<setting name="proxyFactory" value="CGLIB" />-->
+ <!-- 关于mybatis的一二级缓存 请参照:https://tech.meituan.com/2018/01/19/mybatis-cache.html -->
+ <!-- 一级缓存范围默认:SESSION ,此范围在复杂应用场景中可能会出现脏读数据-->
+ <!-- STATEMENT级别的缓存,使一级缓存,只针对当前执行的这一statement有效 -->
+ <!--<setting name="localCacheScope" value="STATEMENT"/>-->
+ <setting name="localCacheScope" value="STATEMENT"/>
+ </settings>
+
+</configuration>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_cert.p12 b/ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_cert.p12
new file mode 100644
index 0000000..44b50d6
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_cert.p12
Binary files differ
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_cert.pem b/ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_cert.pem
new file mode 100644
index 0000000..053917f
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_cert.pem
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEMTCCAxmgAwIBAgIUfuoEQpsAbhKqpCHAAuxIu+7VvpQwDQYJKoZIhvcNAQEL
+BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
+FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
+Q0EwHhcNMjQwNjIwMDY1MzMyWhcNMjkwNjE5MDY1MzMyWjCBijETMBEGA1UEAwwK
+MTY2NTMzMDQxNzEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTYwNAYDVQQL
+DC3mrabmsYnluILlpb3ov5DlkIjnm5vmkKzov4Hlt6XnqIvmnInpmZDlhazlj7gx
+CzAJBgNVBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAMLqFYQnJ7S2ReDfU7FqeYnh3LDQq1F0K00aUYLR0uy3
+sc83rAUanlJHd48odNKgDc6k7oKuUzgs8y9v5i52ZZCg6LSWrZLnRtPV2qjqRvqY
+ZhasFjqsH/ZCbsHuEvJw34gIUXl3FDPkTW7wThCe8BEqz9rywlKOSGMHZKR5pHTQ
+AtjA4JG3SgV7qCiMtsdpCn8hzsUIflIjg16Qw8j4lav149oHMIp9ZWk6Vuz5oYZf
+X/yqD8OsWz6CG1KmU0n8W7ObfYRNUKhBbZq3msLFscr9a2cxO008h4SzSRwleEQT
+EL711OZyQgy9moBpkyLIEoQp3Wy6NaEvZ9LOBj0wQT8CAwEAAaOBuTCBtjAJBgNV
+HRMEAjAAMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0
+cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIw
+RTUwREJDMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0
+MjJFMTJCMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUA
+A4IBAQBTHQhhakcZyah8zTsODzmHS2xq4AiMiSpYyfEe4rTuLZPFj17vZQ4CMjnM
+LXT30uyjPqGCrY8IRajRVCG9DATXX8vKpYk3/LRlM8o0ApBxwpf/g1H2VbO17l0E
+V4CJBbOoi9QA7itMQnJa5PXzrOHlq2G65Q6LAQQTbIzF9TmkxkSIqVbzrKtnbQmL
+dejQxS0ZfKCxA5nuyxmelmidu6VNFzFwV4W/4ToyuXy7gxpBYekhK4SmxQiAa6lU
+49UamtQDHz8WJFwjmvnmVc0h44TjCTl8EsUI2j+pWzDwvcNNz2kYg+chqUYHHmvn
+3s+QkMmYLq/LeNi7GF4M2CFpZu1T
+-----END CERTIFICATE-----
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_key.pem b/ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_key.pem
new file mode 100644
index 0000000..6079851
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/vx/apiclient_key.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDC6hWEJye0tkXg
+31OxanmJ4dyw0KtRdCtNGlGC0dLst7HPN6wFGp5SR3ePKHTSoA3OpO6CrlM4LPMv
+b+YudmWQoOi0lq2S50bT1dqo6kb6mGYWrBY6rB/2Qm7B7hLycN+ICFF5dxQz5E1u
+8E4QnvARKs/a8sJSjkhjB2SkeaR00ALYwOCRt0oFe6gojLbHaQp/Ic7FCH5SI4Ne
+kMPI+JWr9ePaBzCKfWVpOlbs+aGGX1/8qg/DrFs+ghtSplNJ/Fuzm32ETVCoQW2a
+t5rCxbHK/WtnMTtNPIeEs0kcJXhEExC+9dTmckIMvZqAaZMiyBKEKd1sujWhL2fS
+zgY9MEE/AgMBAAECggEARQazEfbv186JFqbgM79aRVsoVbHASftS7l44qZR3Fv/C
+x3iWwcP4d3j5vUf9fy3RVfIQyVTFAerhQFZndOLW+w4Q+ws1cwXWjmR4qEM3Wb2o
+wbS1tpeIRiSmpqUSLquMbddMSzDBhdL/HR+a9cXjjKDVtVstOCFNP0y59olhlUAK
+czDmuhDTTD0lVCcqI/+xc+xeY2rrbYpWVJYTtjH3g5R8oELjvJYARgRb6SAjz58a
+q/4iL5g3B903d3p8XPDdGgyd4xhR0Aaf/rTUYpehUjdoEHkovUVefbrB+xKsIxll
+xax3IdQJq6UvAiskflHTwLsu2Now/xXPEM6TRJC+aQKBgQDv8tvDhECqhcsEcj9/
+PyyJtfeSEbNTGs3dZqzz3ZN5BKt2FNuCkfQm8UYddVdkODSP7OU0pkVL5A/flNP/
+KTmrHl/81riYdqujwV3UYhKbIBFfgumy8lFHy6u5rrYdaCdGciKNg6xKbiD6wexd
+G2gWAx+Id2QmYPArVwYhu9TFAwKBgQDP9AJ/tQRhFAIdBN1EpTFE84A5ovA7rd4j
+Me/21MDlwAgOyrlidr8gzBA4TcYIfs+2B3zIWC2YxEc+uRcU5exDG++2/nO9ftMm
+Nlkn/YmxcfcQAd75mPZvqLDpAXEsLogI1FyhDBAg/ICk6dM6cmLuPGDHvP5Ttl8i
+SoB4oNwIFQKBgDkelgQgCojNWrvPOqBe+Io7wBiMkCS7X8BRveA7oeyQGQT+CBc4
+CWfvzaIbmdcorhKI8TMsVZiwTLsLob+/H5RFodH9h2n77fYIhP6W7hjxdFFJR7qq
+hoDR0ipclcvATIEvkFwhuTTqrH0lBtBPQuLikXIaAcRFFUcr6zDClu7jAoGBAInj
+gsSrgvvcCIq1bwLVhpXx4FRXdnQcFe/AbR1+dWniq3Ujd0mS86kLprWu3GFFtPU+
+gb9WuOVTQOqWUHfK/Z6CJ7Fvh89fCSONZhDeTS8cIna6xt86Ti477RKTojdpo0o3
+hjRDi25T//laEnXu4yqVXpcS+pEHnI1gWU+jWkMBAoGBAMVzBi/05H8+zusudGMR
+UWZaVQ0bLtH1ePF7dgDxiEXeAg7Xp2LWxH4jABSwIhyAMApucZKOXPILwPNQBW47
+zUFB21xK39mFvZOe8UKxLtGKnrNlGtVFWvnJrKPQd+c4r2eCpXUk0QHr1SoNekVq
+VNSUH+BwA3mGKhUqbJquhQZn
+-----END PRIVATE KEY-----
diff --git a/ruoyi-service/ruoyi-user/pom.xml b/ruoyi-service/ruoyi-user/pom.xml
index 0788d57..e5b2ec2 100644
--- a/ruoyi-service/ruoyi-user/pom.xml
+++ b/ruoyi-service/ruoyi-user/pom.xml
@@ -19,6 +19,19 @@
</properties>
<dependencies>
+ <!--汉字转拼音工具包-->
+ <dependency>
+ <groupId>com.belerweb</groupId>
+ <artifactId>pinyin4j</artifactId>
+ <version>2.5.1</version>
+ </dependency>
+
+ <!--微信小程序依赖-->
+ <dependency>
+ <groupId>com.github.binarywang</groupId>
+ <artifactId>weixin-java-miniapp</artifactId>
+ <version>4.4.8.B</version>
+ </dependency>
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
@@ -77,21 +90,31 @@
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
+
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.8.10.ALL</version>
</dependency>
+
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-api-system</artifactId>
<version>3.6.4</version>
</dependency>
+
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-api-admin</artifactId>
<version>3.6.4</version>
</dependency>
+
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-api-order</artifactId>
+ <version>3.6.4</version>
+ </dependency>
+
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/EvaluateController.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/EvaluateController.java
index 36ceb27..097a2f3 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/EvaluateController.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/EvaluateController.java
@@ -1,25 +1,26 @@
package com.ruoyi.user.controller;
import cn.hutool.core.util.RandomUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.exception.GlobalException;
import com.ruoyi.common.security.service.TokenService;
-import com.ruoyi.system.api.model.LoginUser;
+import com.ruoyi.order.api.entity.EvaluateOrderInfoVO;
+import com.ruoyi.order.api.entity.OrderEvaluateSubmitRequest;
+import com.ruoyi.order.api.entity.OrderEvaluateVO;
+import com.ruoyi.order.api.feignClient.EvaluateClient;
import com.ruoyi.system.api.model.LoginUserInfo;
-import com.ruoyi.user.entity.Evaluate;
-import com.ruoyi.user.entity.Order;
+import com.ruoyi.user.entity.RecoveryServe;
import com.ruoyi.user.request.OrderEvaluateRequest;
-import com.ruoyi.user.service.EvaluateService;
-import com.ruoyi.user.service.OrderService;
-import com.ruoyi.user.vo.OrderEvaluateVO;
+import com.ruoyi.user.service.RecoveryServeService;
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;
-import java.math.BigDecimal;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* <p>
@@ -35,20 +36,44 @@
public class EvaluateController {
@Resource
- private EvaluateService evaluateService;
- @Resource
private TokenService tokenService;
@Resource
- private OrderService orderService;
+ private EvaluateClient evaluateClient;
+ @Resource
+ private RecoveryServeService recoveryServeService;
@GetMapping("/orderEvaluate")
@ApiOperation(value = "订单评价列表", tags = {"用户端-个人中心"})
- public R<List<OrderEvaluateVO>> orderEvaluate() {
+ public R<Page<OrderEvaluateVO>> orderEvaluate(@RequestParam("state") Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
LoginUserInfo loginUser = tokenService.getLoginUserByUser();
if (null == loginUser) {
return R.loginExpire("登录失效!");
}
- return R.ok(evaluateService.orderEvaluate(loginUser.getUserid()));
+ Page<OrderEvaluateVO> list = evaluateClient.evaluateListByUser(loginUser.getUserid(), state, pageNum, pageSize).getData();
+ if (null != list) {
+ // 数据封装,减少循环io
+ List<Integer> ids = list.getRecords().stream().map(OrderEvaluateVO::getServeId).collect(Collectors.toList());
+ if (!ids.isEmpty()) {
+ List<RecoveryServe> serveList = recoveryServeService.lambdaQuery()
+ .in(RecoveryServe::getId, ids)
+ .eq(RecoveryServe::getIsDelete, 0).list();
+ Map<Integer, RecoveryServe> map = serveList.stream().collect(Collectors.
+ toMap(RecoveryServe::getId, data -> data));
+ for (OrderEvaluateVO data : list.getRecords()) {
+ Integer serveId = data.getServeId();
+ RecoveryServe recoveryServe = map.get(serveId);
+ if (null != recoveryServe) {
+ EvaluateOrderInfoVO orderInfo = data.getOrderInfo();
+ orderInfo.setServeName(recoveryServe.getServeName());
+ orderInfo.setServeDescribe(recoveryServe.getServeDescribe());
+ orderInfo.setCover(recoveryServe.getCover());
+ }
+ }
+ }
+ }
+ return R.ok(list);
}
@GetMapping("/conductEvaluation")
@@ -60,27 +85,16 @@
@PostMapping("/submitEvaluation")
@ApiOperation(value = "提交评价", tags = {"用户端-个人中心"})
public R<String> submitEvaluation(@RequestBody @Validated OrderEvaluateRequest orderEvaluate) {
- Integer orderId = orderEvaluate.getOrderId();
+ Long orderId = orderEvaluate.getOrderId();
String content = orderEvaluate.getContent();
- BigDecimal starRating = orderEvaluate.getStarRating();
+ Double starRating = orderEvaluate.getStarRating();
String serveNo = orderEvaluate.getServeNo();
LoginUserInfo loginUser = tokenService.getLoginUserByUser();
if (null == loginUser) {
return R.loginExpire("登录失效!");
}
- // 订单详情
- Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
- if (null == order) {
- throw new GlobalException("订单异常!");
- }
- Evaluate evaluate = new Evaluate();
- evaluate.setUserId(loginUser.getUserid());
- evaluate.setOrderId(orderId);
- evaluate.setContent(content);
- evaluate.setWorkerId(order.getServerId());
- evaluate.setStarRating(starRating);
- evaluate.setServeNo(serveNo);
- boolean save = evaluateService.save(evaluate);
+ boolean save = evaluateClient.evaluateSave(new OrderEvaluateSubmitRequest(orderId, content, starRating,
+ serveNo, loginUser.getUserid())).getData();
return save ? R.ok() : R.fail();
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/OrderController.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/OrderController.java
index 4053942..c662152 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/OrderController.java
@@ -1,18 +1,25 @@
package com.ruoyi.user.controller;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.admin.api.entity.Prize;
import com.ruoyi.admin.api.feignClient.AdminClient;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.api.entity.Order;
+import com.ruoyi.order.api.entity.ServeRecord;
+import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.order.api.feignClient.ServeRecordClient;
import com.ruoyi.system.api.model.LoginUserInfo;
-import com.ruoyi.user.entity.Order;
-import com.ruoyi.user.entity.ServeRecord;
+import com.ruoyi.user.entity.RecoveryServe;
+import com.ruoyi.user.entity.RecoveryServePrice;
import com.ruoyi.user.request.OrderRequest;
import com.ruoyi.user.service.OrderService;
-import com.ruoyi.user.service.ServeRecordService;
+import com.ruoyi.user.service.RecoveryServePriceService;
+import com.ruoyi.user.service.RecoveryServeService;
import com.ruoyi.user.vo.OrderDetailVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -21,7 +28,11 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.math.BigDecimal;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
/**
* <p>
@@ -37,25 +48,70 @@
public class OrderController {
@Resource
- private OrderService orderService;
+ private RecoveryServeService recoveryServeService;
@Resource
- private ServeRecordService serveRecordService;
+ private RecoveryServePriceService recoveryServePriceService;
@Resource
private AdminClient adminClient;
@Resource
private TokenService tokenService;
+ @Resource
+ private OrderClient orderClient;
+ @Resource
+ private OrderService orderService;
+ @Resource
+ private ServeRecordClient serveRecordClient;
@GetMapping("/orderList")
@ApiOperation(value = "订单列表", tags = {"用户端-订单"})
- public R<List<Order>> orderList() {
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "状态(-1:全部;0:派单中;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派)", name = "state", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "条数", name = "pageSize", dataType = "Integer", required = true)
+ })
+ public R<IPage<Order>> orderList(@RequestParam Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
LoginUserInfo loginUser = tokenService.getLoginUserByUser();
if (null == loginUser) {
return R.loginExpire("登录失效!");
}
- return R.ok(orderService.lambdaQuery()
- .eq(Order::getIsDelete, 0)
- .eq(Order::getUserId, loginUser.getUserid())
- .orderByDesc(Order::getCreateTime).list());
+ IPage<Order> data = orderClient.orderListByUser(loginUser.getUserid(), state, pageNum, pageSize).getData();
+ List<Integer> ids = data.getRecords().stream().map(Order::getServeId).collect(Collectors.toList());
+ if (!ids.isEmpty()) {
+ List<RecoveryServe> serveList = recoveryServeService.lambdaQuery()
+ .in(RecoveryServe::getId, ids).eq(RecoveryServe::getIsDelete, 0).list();
+ Map<Integer, String> map = serveList.stream().collect(Collectors.toMap(RecoveryServe::getId,
+ mw -> Optional.ofNullable(mw.getCover()).orElse("")));
+ for (Order order : data.getRecords()) {
+ Integer serveId = order.getServeId();
+ order.setCover(map.get(serveId));
+ }
+ }
+ return R.ok(data);
+ }
+
+ @GetMapping("/estimate")
+ @ApiOperation(value = "在线评估", tags = {"用户端-订单"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "回收服务id", name = "orderId", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "所在城市", name = "city", dataType = "String")
+ })
+ public R<BigDecimal> estimate(@RequestParam String orderId, String city) {
+ Order order = orderClient.detail(orderId).getData();
+ RecoveryServe recoveryServe = recoveryServeService.lambdaQuery()
+ .eq(RecoveryServe::getId, order.getServeId())
+ .eq(RecoveryServe::getIsDelete, 0).one();
+ BigDecimal money = recoveryServe.getDefaultPrice();
+ if (StringUtils.isNotBlank(city)) {
+ RecoveryServePrice price = recoveryServePriceService.lambdaQuery()
+ .eq(RecoveryServePrice::getRecoveryServeId, recoveryServe.getId())
+ .eq(RecoveryServePrice::getCity, city).one();
+ if (null != price) {
+ money = price.getRecoveryPrice();
+ }
+ }
+ return R.ok(money);
}
@GetMapping("/detail")
@@ -63,19 +119,17 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "订单id", name = "orderId", dataType = "Integer", required = true)
})
- public R<OrderDetailVO> detail(@RequestParam Integer orderId) {
- Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
+ public R<OrderDetailVO> detail(@RequestParam String orderId) {
+ Order order = orderClient.detail(orderId).getData();
if (null == order) {
- throw new GlobalException("订单状态异常!");
+ throw new GlobalException("订单不存在或已删除!");
}
OrderDetailVO orderDetail = new OrderDetailVO(order);
if (Constants.THREE.equals(order.getState())) {
- ServeRecord record = serveRecordService.lambdaQuery().eq(ServeRecord::getOrderId, orderId)
- .eq(ServeRecord::getIsDelete, 0).one();
- if (null == record) {
- throw new GlobalException("暂未上传家电照片!");
+ ServeRecord serveRecord = serveRecordClient.serveRecordByOrderId(orderId).getData();
+ if (null != serveRecord) {
+ orderDetail.setPhoto(serveRecord.getPhoto());
}
- orderDetail.setPhoto(record.getPhoto());
}
return R.ok(orderDetail);
}
@@ -102,6 +156,32 @@
return R.ok(orderService.obtainAllowance(adminClient.prizeList().getData()));
}
+ /**
+ * 抽奖获取津贴
+ *
+ * @return 奖品列表
+ */
+ @GetMapping("/allowanceMoney")
+ @ApiOperation(value = "补充订单津贴金额", tags = {"用户端-订单"})
+ public R<Object> allowanceMoney(@RequestParam("orderId") String orderId, @RequestParam("prizeId") String prizeId) {
+ Prize data = adminClient.prizeDetail(prizeId).getData();
+ if (null == data) {
+ return R.fail("奖品信息获取失败!");
+ }
+ return R.ok(orderClient.supplementAllowance(orderId, data.getPrizeName()).getData());
+ }
+
+ @PostMapping("/orderEstimate")
+ @ApiOperation(value = "下单评估,生成预订单信息", tags = {"用户端-订单"})
+ public R<String> orderEstimate(@RequestBody OrderRequest orderRequest) {
+ LoginUserInfo loginUser = tokenService.getLoginUserByUser();
+ if (null == loginUser) {
+ return R.loginExpire("登录失效!");
+ }
+ String result = orderService.orderEstimate(orderRequest, loginUser.getUserid());
+ return R.ok(result, "");
+ }
+
@PostMapping("/placeOrder")
@ApiOperation(value = "用户下单", tags = {"用户端-订单"})
public R<String> placeOrder(@RequestBody OrderRequest orderRequest) {
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RecoveryServeController.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RecoveryServeController.java
index c6b81ad..821aad1 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RecoveryServeController.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RecoveryServeController.java
@@ -1,10 +1,20 @@
package com.ruoyi.user.controller;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.system.api.model.LoginUserInfo;
+import com.ruoyi.user.entity.RecoveryClassify;
import com.ruoyi.user.entity.RecoveryServe;
+import com.ruoyi.user.entity.UserCollect;
+import com.ruoyi.user.service.RecoveryClassifyService;
import com.ruoyi.user.service.RecoveryServeService;
+import com.ruoyi.user.service.UserCollectService;
import com.ruoyi.user.vo.ServeListVO;
+import com.ruoyi.user.vo.UserServeTypeVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -15,6 +25,7 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -32,6 +43,56 @@
@Resource
private RecoveryServeService recoveryServeService;
+ @Resource
+ private RecoveryClassifyService recoveryClassifyService;
+ @Resource
+ private UserCollectService collectService;
+ @Resource
+ private TokenService tokenService;
+
+ /**
+ * 获取服务列表
+ */
+ @GetMapping(value = "/serveType")
+ @ApiOperation(value = "获取服务分类", tags = {"用户端-服务"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "服务类型(0:以旧换新;1:家电回收)", name = "type", dataType = "Integer", required = true)
+ })
+ public R<List<UserServeTypeVO>> serveType(@RequestParam("type") Integer type) {
+ String serveType;
+ if (Constants.ZERO.equals(type)) {
+ serveType = Constants.TRADE_IN;
+ } else {
+ serveType = Constants.RECOVERY;
+ }
+ List<RecoveryClassify> serveList = recoveryClassifyService.lambdaQuery()
+ .eq(RecoveryClassify::getIsDelete, 0)
+ .eq(RecoveryClassify::getSupClassify, serveType)
+ .orderByAsc(RecoveryClassify::getSort)
+ .orderByDesc(RecoveryClassify::getCreateTime).list();
+ List<UserServeTypeVO> list = new ArrayList<>();
+ for (RecoveryClassify classify : serveList) {
+ list.add(new UserServeTypeVO(classify.getId(), classify.getSubClassify(),
+ classify.getClassificationPicture(), classify.getTypeDescribe(), type));
+ }
+ return R.ok(list);
+ }
+
+ /**
+ * 获取服务列表
+ */
+ @GetMapping(value = "/servePage")
+ @ApiOperation(value = "根据所选分类获取服务列表", tags = {"用户端-服务"})
+ public R<IPage<RecoveryServe>> servePage(@RequestParam("id") Integer id,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ Page<RecoveryServe> page = recoveryServeService.lambdaQuery()
+ .eq(RecoveryServe::getClassifyId, id)
+ .eq(RecoveryServe::getIsDelete, 0)
+ .orderByAsc(RecoveryServe::getSort)
+ .orderByDesc(RecoveryServe::getCreateTime).page(Page.of(pageNum, pageSize));
+ return R.ok(page);
+ }
/**
* 获取服务列表
@@ -51,10 +112,57 @@
@ApiImplicitParam(value = "服务id", name = "serveId", dataType = "Integer", required = true)
})
public R<RecoveryServe> serveDetail(@RequestParam Integer serveId) {
- return R.ok(recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId)
- .eq(RecoveryServe::getIsDelete, 0).orderByAsc(RecoveryServe::getSort).one());
+ RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId)
+ .eq(RecoveryServe::getIsDelete, 0).orderByAsc(RecoveryServe::getSort).one();
+ // 用户是否收藏
+ UserCollect one = collectService.lambdaQuery()
+ .eq(UserCollect::getServeId, serveId)
+ .eq(UserCollect::getIsDelete, 0).one();
+ if (null != one) {
+ recoveryServe.setIsCollect(Boolean.TRUE);
+ } else {
+ recoveryServe.setIsCollect(Boolean.FALSE);
+ }
+ // 获取服务分类
+ Integer classifyId = recoveryServe.getClassifyId();
+ RecoveryClassify classify = recoveryClassifyService.lambdaQuery()
+ .eq(RecoveryClassify::getId, classifyId)
+ .eq(RecoveryClassify::getIsDelete, 0).one();
+ if (classify.getSupClassify().equals(Constants.TRADE_IN)) {
+ recoveryServe.setType(Constants.ZERO);
+ } else {
+ recoveryServe.setType(Constants.ONE);
+ }
+ return R.ok(recoveryServe);
}
+ /**
+ * 服务收藏
+ */
+ @GetMapping(value = "/serveCollect")
+ @ApiOperation(value = "服务收藏", tags = {"用户端-服务"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "服务id", name = "serveId", dataType = "Integer", required = true)
+ })
+ public R<String> serveCollect(@RequestParam Integer serveId) {
+ LoginUserInfo loginUser = tokenService.getLoginUserByUser();
+ if (null == loginUser) {
+ return R.loginExpire("登录失效!");
+ }
+ UserCollect collect = collectService.lambdaQuery()
+ .eq(UserCollect::getUserId, loginUser.getUserid())
+ .eq(UserCollect::getServeId, serveId)
+ .eq(UserCollect::getIsDelete, 0).one();
+ boolean result;
+ if (null != collect) {
+ collect.setIsDelete(Constants.ONE);
+ result = collectService.updateById(collect);
+ } else {
+ collect = new UserCollect(loginUser.getUserid(), serveId);
+ result = collectService.save(collect);
+ }
+ return result ? R.ok() : R.fail();
+ }
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RegionController.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RegionController.java
index ddf8dda..3de44f4 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RegionController.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/RegionController.java
@@ -1,9 +1,15 @@
package com.ruoyi.user.controller;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.user.service.RegionService;
+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;
/**
* <p>
@@ -15,6 +21,19 @@
*/
@RestController
@RequestMapping("/region")
+@Api(value = "用户端-首页", tags = {"用户端-首页"})
public class RegionController {
+ @Resource
+ private RegionService regionService;
+
+ /**
+ * 选择城市市区列表
+ */
+ @GetMapping("/urbanArea")
+ @ApiOperation(value = "选择城市市区列表", tags = {"用户端-首页"})
+ public R<Object> urbanArea(String keyword) {
+ return R.ok(regionService.urbanArea(keyword));
+ }
+
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserCollectController.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserCollectController.java
index 61d15f3..acba834 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserCollectController.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserCollectController.java
@@ -1,6 +1,8 @@
package com.ruoyi.user.controller;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.system.api.model.LoginUserInfo;
@@ -17,7 +19,6 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
-import java.util.List;
/**
* <p>
@@ -76,14 +77,28 @@
*/
@GetMapping(value = "/collectList")
@ApiOperation(value = "服务收藏列表", tags = {"用户端-收藏"})
- public R<List<UserCollectVO>> collectList() {
+ public R<IPage<UserCollectVO>> collectList(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
LoginUserInfo loginUser = tokenService.getLoginUserByUser();
if (null == loginUser) {
return R.loginExpire("登录失效!");
}
- List<UserCollectVO> collectList = userCollectService.collectList(loginUser.getUserid());
+ IPage<UserCollectVO> collectList = userCollectService.collectList(loginUser.getUserid(), Page.of(pageNum, pageSize));
return R.ok(collectList);
}
+ /**
+ * 服务收藏列表
+ */
+ @GetMapping(value = "/detailHaveCollect")
+ @ApiOperation(value = "服务详情取消/添加收藏", tags = {"用户端-收藏"})
+ public R<IPage<UserCollectVO>> collectList(@RequestParam Integer serveId) {
+ LoginUserInfo loginUser = tokenService.getLoginUserByUser();
+ if (null == loginUser) {
+ return R.loginExpire("登录失效!");
+ }
+// IPage<UserCollectVO> collectList = userCollectService.collectList(loginUser.getUserid());
+ return R.ok();
+ }
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java
index 419a098..ff3d35f 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserController.java
@@ -31,6 +31,7 @@
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -59,13 +60,34 @@
private RecoveryServeService recoveryServeService;
/**
+ * 解密用户敏感数据
+ *
+ * @param encryptedData 明文,加密数据
+ * @param iv 加密算法的初始向量
+ * @param code 用户允许登录后,回调内容会带上 code(有效期五分钟),开发者需要将 code 发送到开发者服务器后台,使用code 换取 session_key api,将 code 换成 openid 和 session_key
+ * @return 登录信息
+ */
+ @ApiOperation("微信授权一键登录")
+ @GetMapping("/wxAuthorize")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "用户允许登录后回调内容code", name = "code", dataType = "String", required = true),
+ @ApiImplicitParam(value = "明文,加密数据", name = "encryptedData", dataType = "String", required = true),
+ @ApiImplicitParam(value = "加密算法的初始向量", name = "iv", dataType = "String", required = true)
+ })
+ public R<Map<String, Object>> decodeUserInfo(@RequestParam("code") String code,
+ @RequestParam("encryptedData") String encryptedData,
+ @RequestParam("iv") String iv) {
+ return R.ok(userService.decodeUserInfo(code, encryptedData, iv));
+ }
+
+ /**
* 用户端-获取微信openId
*
* @param code 随机code
*/
@ApiOperation(value = "获取微信openId", tags = {"用户端-登录"})
@PostMapping(value = "/decodeOpenid")
- public R<String> decodeOpenid(HttpServletResponse response, @RequestParam String code) {
+ public R<String> decodeOpenid(HttpServletResponse response, String code) {
return userService.decodeOpenid(response, code);
}
@@ -133,7 +155,7 @@
@ApiImplicitParam(value = "0:用户注册协议、1:用户隐私协议", name = "type", dataType = "Integer", required = true)
})
public R<Agreement> recoverySearch(@RequestParam Integer type) {
- if (!Constants.ZERO.equals(type) || !Constants.ONE.equals(type)) {
+ if (!Constants.ZERO.equals(type) && !Constants.ONE.equals(type)) {
throw new GlobalException("获取类型异常!");
}
return R.ok(adminClient.dataInfo(type).getData());
@@ -145,7 +167,25 @@
@ApiOperation(value = "轮播图列表", tags = {"用户端-首页"})
@GetMapping(value = "/banner")
public R<List<Rotate>> banner() {
- return R.ok(adminClient.bannerList().getData());
+ List<Rotate> data = adminClient.bannerList().getData();
+ for (Rotate datum : data) {
+ RecoveryServe recoveryServe = recoveryServeService.lambdaQuery()
+ .eq(RecoveryServe::getId, datum.getId())
+ .eq(RecoveryServe::getIsDelete, 0).one();
+ Integer classifyId = recoveryServe.getClassifyId();
+ RecoveryClassify classify = recoveryClassifyService.lambdaQuery()
+ .eq(RecoveryClassify::getId, classifyId)
+ .eq(RecoveryClassify::getIsDelete, 0).one();
+ if (null != classify) {
+ String supClassify = classify.getSupClassify();
+ if (Constants.RECOVERY.equals(supClassify)) {
+ datum.setType(Constants.ONE);
+ } else {
+ datum.setType(Constants.ZERO);
+ }
+ }
+ }
+ return R.ok(data);
}
/**
@@ -155,6 +195,15 @@
@GetMapping(value = "/notice")
public R<List<Notices>> notice() {
return R.ok(adminClient.noticesList().getData());
+ }
+
+ /**
+ * 用户端-通知公告详情
+ */
+ @ApiOperation(value = "通知公告详情", tags = {"用户端-首页"})
+ @GetMapping(value = "/noticeDetail")
+ public R<Notices> notice(@RequestParam Integer id) {
+ return R.ok(adminClient.noticesDetail(id).getData());
}
/**
@@ -198,6 +247,17 @@
.eq(RecoveryServe::getIsDelete, 0)
.orderByAsc(RecoveryServe::getSort);
wrapper = StringUtils.isNotBlank(keyword) ? wrapper.like(RecoveryServe::getServeName, keyword) : wrapper;
+ List<RecoveryServe> serveList = wrapper.list();
+ for (RecoveryServe recoveryServe : serveList) {
+ RecoveryClassify classify = recoveryClassifyService.lambdaQuery()
+ .eq(RecoveryClassify::getId, recoveryServe.getClassifyId())
+ .eq(RecoveryClassify::getIsDelete, 0).one();
+ if (Constants.RECOVERY.equals(classify.getSupClassify())) {
+ recoveryServe.setType(Constants.ONE);
+ } else {
+ recoveryServe.setType(Constants.ZERO);
+ }
+ }
return R.ok(wrapper.list());
}
@@ -215,4 +275,19 @@
.eq(User::getIsDelete, 0).one());
}
+ /**
+ * 用户端-修改头像&昵称
+ */
+ @ApiOperation(value = "修改头像&昵称", tags = {"用户端-个人中心"})
+ @GetMapping(value = "/updateInfo")
+ public R<Boolean> updateInfo(@RequestParam String picture, @RequestParam String nickname) {
+ LoginUserInfo loginUser = tokenService.getLoginUserByUser();
+ if (null == loginUser) {
+ return R.loginExpire("登录失效!");
+ }
+ return R.ok(userService.lambdaUpdate().eq(User::getId, loginUser.getUserid())
+ .set(User::getProfilePicture, picture)
+ .set(User::getNickname, nickname).update());
+ }
+
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserRecipientController.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserRecipientController.java
index c7662a8..2f472a4 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserRecipientController.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/UserRecipientController.java
@@ -1,6 +1,8 @@
package com.ruoyi.user.controller;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.service.TokenService;
@@ -35,7 +37,7 @@
private TokenService tokenService;
/**
- * 用户端首页回收分类推荐
+ * 收货地址列表
*/
@GetMapping(value = "/list")
@ApiOperation(value = "收货地址列表", tags = {"用户端-收货地址管理"})
@@ -48,6 +50,23 @@
.eq(UserRecipient::getIsDelete, Constants.ZERO)
.orderByDesc(UserRecipient::getIsDefault)
.orderByDesc(UserRecipient::getCreateTime).list());
+ }
+
+ /**
+ * 收货地址列表
+ */
+ @GetMapping(value = "/page")
+ @ApiOperation(value = "收货地址分页列表", tags = {"用户端-收货地址管理"})
+ public R<IPage<UserRecipient>> page(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+ LoginUserInfo loginUser = tokenService.getLoginUserByUser();
+ if (null == loginUser) {
+ return R.loginExpire("登录失效!");
+ }
+ return R.ok(recipientService.lambdaQuery().eq(UserRecipient::getUserId, loginUser.getUserid())
+ .eq(UserRecipient::getIsDelete, Constants.ZERO)
+ .orderByDesc(UserRecipient::getIsDefault)
+ .orderByDesc(UserRecipient::getCreateTime).page(Page.of(pageNum, pageSize)));
}
/**
@@ -85,6 +104,29 @@
}
/**
+ * 设置默认收货地址
+ *
+ * @param id 收货地址id
+ */
+ @ApiOperation(value = "设置默认收货地址", tags = {"用户端-收货地址管理"})
+ @PostMapping(value = "/defaultAddress")
+ public R<String> defaultAddress(@RequestParam Integer id) {
+ LoginUserInfo loginUser = tokenService.getLoginUserByUser();
+ if (null == loginUser) {
+ return R.loginExpire("登录失效!");
+ }
+ // 修改所有收货地址
+ boolean update = recipientService.lambdaUpdate()
+ .set(UserRecipient::getIsDefault, Constants.ZERO)
+ .eq(UserRecipient::getUserId, loginUser.getUserid())
+ .eq(UserRecipient::getIsDelete, Constants.ZERO).update();
+ update = update && recipientService.lambdaUpdate()
+ .eq(UserRecipient::getId, id)
+ .set(UserRecipient::getIsDefault, Constants.ONE).update();
+ return update ? R.ok() : R.fail();
+ }
+
+ /**
* 修改收货地址
*
* @param userRecipient 收货地址信息
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/WithdrawController.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/WithdrawController.java
index 69e6061..d6b83d1 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/WithdrawController.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/controller/WithdrawController.java
@@ -1,10 +1,13 @@
package com.ruoyi.user.controller;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.api.entity.Withdraw;
+import com.ruoyi.order.api.entity.WithdrawDetailVO;
+import com.ruoyi.order.api.feignClient.WithdrawClient;
import com.ruoyi.system.api.model.LoginUserInfo;
-import com.ruoyi.user.entity.Withdraw;
import com.ruoyi.user.service.WithdrawService;
import com.ruoyi.user.vo.WithdrawListVO;
import io.swagger.annotations.Api;
@@ -17,7 +20,7 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
-import java.util.List;
+import java.math.BigDecimal;
/**
* <p>
@@ -36,25 +39,28 @@
private WithdrawService withdrawService;
@Resource
private TokenService tokenService;
+ @Resource
+ private WithdrawClient withdrawClient;
@GetMapping("/withdrawList")
@ApiOperation(value = "提现列表", tags = {"用户端-个人中心-提现"})
- public R<WithdrawListVO> withdrawList() {
+ public R<WithdrawListVO> withdrawList(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
LoginUserInfo loginUser = tokenService.getLoginUserByUser();
if (null == loginUser) {
return R.loginExpire("登录失效!");
}
- return R.ok(withdrawService.withdrawList(loginUser.getUserid()));
+ return R.ok(withdrawService.withdrawList(loginUser.getUserid(), pageNum, pageSize));
}
@GetMapping("/withdrawDetail")
@ApiOperation(value = "提现详情", tags = {"用户端-个人中心-提现"})
- public R<WithdrawListVO> withdrawDetail() {
+ public R<WithdrawDetailVO> withdrawDetail(@RequestParam String orderId) {
LoginUserInfo loginUser = tokenService.getLoginUserByUser();
if (null == loginUser) {
return R.loginExpire("登录失效!");
}
- return R.ok(withdrawService.withdrawList(loginUser.getUserid()));
+ return withdrawClient.withdrawDetailByUser(orderId);
}
@GetMapping("/confirmWithdraw")
@@ -62,7 +68,7 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "订单id", name = "orderId", dataType = "Integer", required = true)
})
- public R<Boolean> confirmWithdraw(@RequestParam Integer orderId) {
+ public R<Boolean> confirmWithdraw(@RequestParam String orderId) {
LoginUserInfo loginUser = tokenService.getLoginUserByUser();
if (null == loginUser) {
return R.loginExpire("登录失效!");
@@ -72,13 +78,20 @@
@GetMapping("/withdrawRecord")
@ApiOperation(value = "提现记录", tags = {"用户端-个人中心-提现"})
- public R<List<Withdraw>> withdrawRecord() {
+ public R<Page<Withdraw>> withdrawRecord(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
LoginUserInfo loginUser = tokenService.getLoginUserByUser();
if (null == loginUser) {
return R.loginExpire("登录失效!");
}
- return R.ok(withdrawService.lambdaQuery().eq(Withdraw::getUserId, loginUser.getUserid())
- .eq(Withdraw::getIsDelete, 0).orderByDesc(Withdraw::getCreateTime).list());
+ Page<Withdraw> data = withdrawClient.withdrawRecordList(loginUser.getUserid(), pageNum, pageSize).getData();
+ BigDecimal b = BigDecimal.ZERO;
+ if (null != data) {
+ for (Withdraw record : data.getRecords()) {
+ b = b.add(record.getApplyForMoney());
+ }
+ }
+ return R.ok(data);
}
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/Evaluate.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/Evaluate.java
index ca1730d..e41406d 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/Evaluate.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/Evaluate.java
@@ -35,7 +35,7 @@
@ApiModelProperty("订单id")
@TableField("order_id")
- private Integer orderId;
+ private String orderId;
@ApiModelProperty("评价内容")
@TableField("content")
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryClassify.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryClassify.java
index 198b4ea..a91252b 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryClassify.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryClassify.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -24,7 +25,7 @@
@ApiModel(value = "RecoveryClassify对象", description = "回收分类表")
public class RecoveryClassify extends BaseEntity {
- @TableId(value = "id",type = IdType.AUTO)
+ @TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("上级分类名称")
@@ -59,4 +60,11 @@
@TableField("is_recommend")
private Integer isRecommend;
+ @ApiModelProperty("服务类型(0:以旧换新,1:家电回收)")
+ @TableField(exist = false)
+ private Integer type;
+
+ public Integer getType() {
+ return supClassify.equals(Constants.TRADE_IN) ? Constants.ZERO : Constants.ONE;
+ }
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryServe.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryServe.java
index fb62f13..7a1e230 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryServe.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryServe.java
@@ -26,7 +26,7 @@
@ApiModel(value = "RecoveryServe对象", description = "回收服务列表")
public class RecoveryServe extends BaseEntity {
- @TableId(value = "id",type = IdType.AUTO)
+ @TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("所属分类id")
@@ -43,7 +43,7 @@
@ApiModelProperty("预估价格")
@TableField("estimate_price")
- private BigDecimal estimatePrice;
+ private String estimatePrice;
@ApiModelProperty("默认回收价")
@TableField("default_price")
@@ -61,4 +61,12 @@
@TableField("rotate")
private String rotate;
+ @ApiModelProperty("是否收藏")
+ @TableField(exist = false)
+ private Boolean isCollect;
+
+ @ApiModelProperty("服务类型(0:以旧换新,1:家电回收)")
+ @TableField(exist = false)
+ private Integer type;
+
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryServePrice.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryServePrice.java
new file mode 100644
index 0000000..6cf94d5
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/RecoveryServePrice.java
@@ -0,0 +1,44 @@
+package com.ruoyi.user.entity;
+
+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.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 回收服务对应回收价格及所在城市
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-10
+ */
+@Getter
+@Setter
+@TableName("sys_recovery_serve_price")
+@ApiModel(value = "RecoveryServePrice对象", description = "回收服务对应回收价格及所在城市")
+public class RecoveryServePrice extends BaseEntity {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("回收服务id")
+ @TableField("recovery_serve_id")
+ private Integer recoveryServeId;
+
+ @ApiModelProperty("回收价格")
+ @TableField("recovery_price")
+ private BigDecimal recoveryPrice;
+
+ @ApiModelProperty("对应城市")
+ @TableField("city")
+ private String city;
+
+}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/ServeRecord.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/ServeRecord.java
index bdaaf48..67920e0 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/ServeRecord.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/ServeRecord.java
@@ -24,12 +24,12 @@
@ApiModel(value = "ServeRecord对象", description = "师傅服务记录")
public class ServeRecord extends BaseEntity {
- @TableId(value = "id",type = IdType.AUTO)
+ @TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("订单id")
@TableField("order_id")
- private Integer orderId;
+ private String orderId;
@ApiModelProperty("现场照片(多张照片 ','隔开)")
@TableField("photo")
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/UserRecipient.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/UserRecipient.java
index aab5cb4..ba8900d 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/UserRecipient.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/UserRecipient.java
@@ -39,6 +39,10 @@
@TableField("recipientPhone")
private String recipientPhone;
+ @ApiModelProperty("地图搜索名称")
+ @TableField("name")
+ private String name;
+
@ApiModelProperty("地址")
@TableField("address")
private String address;
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/Withdraw.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/Withdraw.java
deleted file mode 100644
index cb0b4b1..0000000
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/entity/Withdraw.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.ruoyi.user.entity;
-
-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.ruoyi.common.core.domain.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-/**
- * <p>
- * 用户提现申请记录表
- * </p>
- *
- * @author hjl
- * @since 2024-06-07
- */
-@Getter
-@Setter
-@TableName("t_withdraw")
-@ApiModel(value = "Withdraw对象", description = "用户提现申请记录表")
-public class Withdraw extends BaseEntity {
-
- @TableId(value = "id",type = IdType.AUTO)
- private Integer id;
-
- @ApiModelProperty("用户id")
- @TableField("user_id")
- private Integer userId;
-
- @ApiModelProperty("用户手机号")
- @TableField("user_phone")
- private String userPhone;
-
- @ApiModelProperty("申请时间")
- @TableField("apply_for_time")
- private Date applyForTime;
-
- @ApiModelProperty("申请金额")
- @TableField("apply_for_money")
- private BigDecimal applyForMoney;
-
- @ApiModelProperty("申请状态 0待审核;1已通过;2已驳回")
- @TableField("state")
- private Integer state;
-
- @ApiModelProperty("审批意见")
- @TableField("opinion")
- private String opinion;
-
- @ApiModelProperty("订单id")
- @TableField("order_id")
- private Integer orderId;
-
-}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/EvaluateMapper.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/EvaluateMapper.java
index a4faa40..bf4141e 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/EvaluateMapper.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/EvaluateMapper.java
@@ -2,10 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.user.entity.Evaluate;
-import com.ruoyi.user.vo.OrderEvaluateVO;
import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
/**
* <p>
@@ -18,11 +15,4 @@
@Mapper
public interface EvaluateMapper extends BaseMapper<Evaluate> {
- /**
- * 订单与评价列表
- *
- * @param userId 用户id
- * @return 列表数据
- */
- List<OrderEvaluateVO> orderEvaluate(Integer userId);
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/RecoveryServePriceMapper.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/RecoveryServePriceMapper.java
new file mode 100644
index 0000000..413c358
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/RecoveryServePriceMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.user.mapper;
+
+import com.ruoyi.user.entity.RecoveryServePrice;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 回收服务对应回收价格及所在城市 Mapper 接口
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-10
+ */
+@Mapper
+public interface RecoveryServePriceMapper extends BaseMapper<RecoveryServePrice> {
+
+}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/UserCollectMapper.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/UserCollectMapper.java
index c0f5027..c106edf 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/UserCollectMapper.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/UserCollectMapper.java
@@ -1,11 +1,12 @@
package com.ruoyi.user.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.user.entity.UserCollect;
import com.ruoyi.user.vo.UserCollectVO;
import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
+import org.apache.ibatis.annotations.Param;
/**
* <p>
@@ -22,7 +23,8 @@
* 服务收藏列表
*
* @param userid 用户id
+ * @param page 分页
* @return 服务列表
*/
- List<UserCollectVO> collectList(Integer userid);
+ IPage<UserCollectVO> collectList(@Param("userid") Integer userid, Page<UserCollectVO> page);
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/WithdrawMapper.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/WithdrawMapper.java
deleted file mode 100644
index 08817f8..0000000
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/mapper/WithdrawMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.ruoyi.user.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.user.entity.Withdraw;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * <p>
- * 用户提现申请记录表 Mapper 接口
- * </p>
- *
- * @author hjl
- * @since 2024-06-07
- */
-@Mapper
-public interface WithdrawMapper extends BaseMapper<Withdraw> {
-
-}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/LoginPhoneRequest.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/LoginPhoneRequest.java
index dad4aff..eb454ee 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/LoginPhoneRequest.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/LoginPhoneRequest.java
@@ -28,7 +28,7 @@
private String city;
@ApiModelProperty("微信openId")
- @NotBlank(message = "请先获取微信授权!", groups = PhoneCodeLogin.class)
+// @NotBlank(message = "微信授权异常,无法获取授权信息!")
private String openId;
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/OrderEvaluateRequest.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/OrderEvaluateRequest.java
index 54f070f..6eba1ad 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/OrderEvaluateRequest.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/OrderEvaluateRequest.java
@@ -4,7 +4,6 @@
import lombok.Data;
import javax.validation.constraints.NotNull;
-import java.math.BigDecimal;
/**
* @author HJL
@@ -15,15 +14,15 @@
public class OrderEvaluateRequest {
@ApiModelProperty("订单id")
- @NotNull(message = "请选择评价订单")
- private Integer orderId;
+ @NotNull(message = "请选择评价订单!")
+ private Long orderId;
@ApiModelProperty("评价内容")
private String content;
@ApiModelProperty("评价星级")
- @NotNull(message = "请选择评价星级")
- private BigDecimal starRating;
+ @NotNull(message = "请选择评价星级!")
+ private Double starRating;
@ApiModelProperty("服务单号")
private String serveNo;
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/OrderRequest.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/OrderRequest.java
index 18fce3f..1eb1393 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/OrderRequest.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/request/OrderRequest.java
@@ -31,6 +31,9 @@
@ApiModelProperty("预约地址(收货地址id)")
private Integer addressId;
+ @ApiModelProperty("手填预约地址")
+ private String fillAddress;
+
@ApiModelProperty("上门时间")
private String time;
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/EvaluateService.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/EvaluateService.java
index 18965b9..867fb54 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/EvaluateService.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/EvaluateService.java
@@ -2,9 +2,6 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.user.entity.Evaluate;
-import com.ruoyi.user.vo.OrderEvaluateVO;
-
-import java.util.List;
/**
* <p>
@@ -16,11 +13,4 @@
*/
public interface EvaluateService extends IService<Evaluate> {
- /**
- * 订单与评价列表
- *
- * @param userId 用户id
- * @return 列表数据
- */
- List<OrderEvaluateVO> orderEvaluate(Integer userId);
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/OrderService.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/OrderService.java
index 053df99..2bf01b9 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/OrderService.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/OrderService.java
@@ -33,4 +33,13 @@
* @return 下单结果
*/
Boolean placeOrder(OrderRequest orderRequest, Integer userId);
+
+ /**
+ * 用户下单
+ *
+ * @param orderRequest 下单信息
+ * @param userid 用户id
+ * @return 下单结果
+ */
+ String orderEstimate(OrderRequest orderRequest, Integer userid);
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/RecoveryServePriceService.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/RecoveryServePriceService.java
new file mode 100644
index 0000000..671938f
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/RecoveryServePriceService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.user.service;
+
+import com.ruoyi.user.entity.RecoveryServePrice;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 回收服务对应回收价格及所在城市 服务类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-10
+ */
+public interface RecoveryServePriceService extends IService<RecoveryServePrice> {
+
+}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/RegionService.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/RegionService.java
index ccb087c..d3815d0 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/RegionService.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/RegionService.java
@@ -13,4 +13,11 @@
*/
public interface RegionService extends IService<Region> {
+ /**
+ * 选择城市市区列表
+ *
+ * @param keyword 搜索关键字
+ * @return 市区列表
+ */
+ Object urbanArea(String keyword);
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/UserCollectService.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/UserCollectService.java
index 40bc817..72be1ee 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/UserCollectService.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/UserCollectService.java
@@ -1,10 +1,10 @@
package com.ruoyi.user.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.user.entity.UserCollect;
import com.ruoyi.user.vo.UserCollectVO;
-
-import java.util.List;
/**
* <p>
@@ -20,7 +20,8 @@
* 服务收藏列表
*
* @param userid 用户id
+ * @param page 分页
* @return 服务列表
*/
- List<UserCollectVO> collectList(Integer userid);
+ IPage<UserCollectVO> collectList(Integer userid, Page<UserCollectVO> page);
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/UserService.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/UserService.java
index c07b6f7..8f5e689 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/UserService.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/UserService.java
@@ -5,6 +5,7 @@
import com.ruoyi.user.entity.User;
import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
/**
* <p>
@@ -24,4 +25,15 @@
* @return openId
*/
R<String> decodeOpenid(HttpServletResponse response, String code);
+
+ /**
+ * 解密用户敏感数据
+ *
+ * @param encryptedData 明文,加密数据
+ * @param iv 加密算法的初始向量
+ * @param code 用户允许登录后,回调内容会带上 code(有效期五分钟),开发者需要将 code 发送到开发者服务器后台,使用code 换取 session_key api,将 code 换成 openid 和 session_key
+ * @return 登录信息
+ */
+ Map<String, Object> decodeUserInfo(String encryptedData, String iv, String code);
+
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/WithdrawService.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/WithdrawService.java
index 9e55bb3..6a504fb 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/WithdrawService.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/WithdrawService.java
@@ -1,7 +1,5 @@
package com.ruoyi.user.service;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.user.entity.Withdraw;
import com.ruoyi.user.vo.WithdrawListVO;
/**
@@ -12,15 +10,17 @@
* @author hjl
* @since 2024-06-07
*/
-public interface WithdrawService extends IService<Withdraw> {
+public interface WithdrawService {
/**
* 提现列表
*
- * @param userid 用户id
+ * @param userid 用户id
+ * @param pageNum 页码
+ * @param pageSize 条数
* @return 提现列表
*/
- WithdrawListVO withdrawList(Integer userid);
+ WithdrawListVO withdrawList(Integer userid, Integer pageNum, Integer pageSize);
/**
* 确认提现
@@ -29,5 +29,5 @@
* @param orderId 订单id
* @return 操作结果
*/
- Boolean confirmWithdraw(Integer orderId, Integer userid);
+ Boolean confirmWithdraw(String orderId, Integer userid);
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/EvaluateServiceImpl.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/EvaluateServiceImpl.java
index bf5997a..abe3a40 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/EvaluateServiceImpl.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/EvaluateServiceImpl.java
@@ -4,10 +4,7 @@
import com.ruoyi.user.entity.Evaluate;
import com.ruoyi.user.mapper.EvaluateMapper;
import com.ruoyi.user.service.EvaluateService;
-import com.ruoyi.user.vo.OrderEvaluateVO;
import org.springframework.stereotype.Service;
-
-import java.util.List;
/**
* <p>
@@ -20,8 +17,4 @@
@Service
public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> implements EvaluateService {
- @Override
- public List<OrderEvaluateVO> orderEvaluate(Integer userId) {
- return baseMapper.orderEvaluate(userId);
- }
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java
index 34f1368..e2bbacd 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/OrderServiceImpl.java
@@ -2,8 +2,10 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.admin.api.entity.Prize;
-import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.common.core.utils.SnowflakeIdWorker;
+import com.ruoyi.order.api.entity.UserOrderRequest;
+import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.user.entity.Order;
import com.ruoyi.user.entity.RecoveryServe;
import com.ruoyi.user.entity.UserRecipient;
@@ -15,7 +17,6 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.math.BigDecimal;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
@@ -35,6 +36,13 @@
private UserRecipientService userRecipientService;
@Resource
private RecoveryServeService recoveryServeService;
+ @Resource
+ private OrderClient orderClient;
+
+ /**
+ * 雪花算法类
+ */
+ private static final SnowflakeIdWorker SNOW_FLAKE_ID_WORKER = new SnowflakeIdWorker(5, 5);
@Override
public Object obtainAllowance(List<Prize> prizeList) {
@@ -66,16 +74,8 @@
@Override
public Boolean placeOrder(OrderRequest orderRequest, Integer userId) {
- String orderNumber = orderRequest.getOrderNumber();
Integer serveId = orderRequest.getServeId();
- String reservationName = orderRequest.getReservationName();
- String reservationPhone = orderRequest.getReservationPhone();
Integer addressId = orderRequest.getAddressId();
- String time = orderRequest.getTime();
- String reservationRemark = orderRequest.getReservationRemark();
- Double longitude = orderRequest.getLongitude();
- Double latitude = orderRequest.getLatitude();
- BigDecimal subsidy = orderRequest.getSubsidy();
// 下单相关信息
RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId)
.eq(RecoveryServe::getIsDelete, 0).one();
@@ -84,28 +84,61 @@
if (null == recoveryServe || null == userRecipient) {
throw new GlobalException("下单失败,预约服务信息或收货地址信息异常!");
}
- // 订单信息
- Order order = new Order();
- order.setOrderNumber(orderNumber);
- order.setServeId(serveId);
- order.setServeName(recoveryServe.getServeName());
- order.setServePrice(recoveryServe.getDefaultPrice());
- order.setUserId(userId);
- order.setReservationName(reservationName);
- order.setReservationPhone(reservationPhone);
- order.setReservationAddress(userRecipient.getAddress());
- order.setTime(time);
- order.setReservationRemark(reservationRemark);
- order.setOrderMoney(recoveryServe.getDefaultPrice().add(new BigDecimal(String.valueOf(subsidy))));
- order.setState(Constants.ZERO);
- order.setType(Constants.ZERO);
- order.setLongitude(longitude);
- order.setLatitude(latitude);
- order.setIsWithdrawal(Constants.ZERO);
- order.setSubsidy(subsidy);
- order.setAddress(userRecipient.getAddressDetail());
- return this.save(order);
+ UserOrderRequest userOrderRequest = new UserOrderRequest();
+ userOrderRequest.setOrderNumber(orderRequest.getOrderNumber());
+ userOrderRequest.setServeId(orderRequest.getServeId());
+ userOrderRequest.setReservationName(orderRequest.getReservationName());
+ userOrderRequest.setReservationPhone(orderRequest.getReservationPhone());
+ userOrderRequest.setAddressId(orderRequest.getAddressId());
+ userOrderRequest.setTime(orderRequest.getTime());
+ userOrderRequest.setReservationRemark(orderRequest.getReservationRemark());
+ userOrderRequest.setLongitude(orderRequest.getLongitude());
+ userOrderRequest.setLatitude(orderRequest.getLatitude());
+ userOrderRequest.setSubsidy(orderRequest.getSubsidy());
+ userOrderRequest.setDefaultPrice(recoveryServe.getDefaultPrice());
+ userOrderRequest.setServeName(recoveryServe.getServeName());
+ userOrderRequest.setAddress(userRecipient.getAddress());
+ userOrderRequest.setAddressDetail(userRecipient.getAddressDetail());
+ userOrderRequest.setUserId(userId);
+ return orderClient.placeOrder(userOrderRequest).getData();
}
+ @Override
+ public String orderEstimate(OrderRequest orderRequest, Integer userid) {
+ Integer serveId = orderRequest.getServeId();
+ orderRequest.setOrderNumber(String.valueOf(SNOW_FLAKE_ID_WORKER.nextId()));
+ Integer addressId = orderRequest.getAddressId();
+ // 下单相关信息
+ RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId)
+ .eq(RecoveryServe::getIsDelete, 0).one();
+
+ if (null == recoveryServe) {
+ throw new GlobalException("下单失败,预约服务信息或收货地址信息异常!");
+ }
+ UserOrderRequest userOrderRequest = new UserOrderRequest();
+ if (null != orderRequest.getAddressId()) {
+ UserRecipient userRecipient = userRecipientService.lambdaQuery().eq(UserRecipient::getId, addressId)
+ .eq(UserRecipient::getIsDelete, 0).one();
+ userOrderRequest.setAddress(userRecipient.getAddress());
+ userOrderRequest.setAddressDetail(userRecipient.getAddressDetail());
+ } else {
+ userOrderRequest.setAddressDetail(orderRequest.getFillAddress());
+ }
+ userOrderRequest.setOrderNumber(orderRequest.getOrderNumber());
+ userOrderRequest.setServeId(orderRequest.getServeId());
+ userOrderRequest.setReservationName(orderRequest.getReservationName());
+ userOrderRequest.setReservationPhone(orderRequest.getReservationPhone());
+ userOrderRequest.setAddressId(orderRequest.getAddressId());
+ userOrderRequest.setTime(orderRequest.getTime());
+ userOrderRequest.setReservationRemark(orderRequest.getReservationRemark());
+ userOrderRequest.setLongitude(orderRequest.getLongitude());
+ userOrderRequest.setLatitude(orderRequest.getLatitude());
+ userOrderRequest.setSubsidy(orderRequest.getSubsidy());
+ userOrderRequest.setDefaultPrice(recoveryServe.getDefaultPrice());
+ userOrderRequest.setServeName(recoveryServe.getServeName());
+ userOrderRequest.setUserId(userid);
+ return orderClient.orderEstimate(userOrderRequest).getData();
+ }
+
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RecoveryServePriceServiceImpl.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RecoveryServePriceServiceImpl.java
new file mode 100644
index 0000000..bd03f92
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RecoveryServePriceServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.user.service.impl;
+
+import com.ruoyi.user.entity.RecoveryServePrice;
+import com.ruoyi.user.mapper.RecoveryServePriceMapper;
+import com.ruoyi.user.service.RecoveryServePriceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 回收服务对应回收价格及所在城市 服务实现类
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-10
+ */
+@Service
+public class RecoveryServePriceServiceImpl extends ServiceImpl<RecoveryServePriceMapper, RecoveryServePrice> implements RecoveryServePriceService {
+
+}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RegionServiceImpl.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RegionServiceImpl.java
index b160b8e..98e9026 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RegionServiceImpl.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RegionServiceImpl.java
@@ -1,10 +1,22 @@
package com.ruoyi.user.service.impl;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.user.entity.Region;
import com.ruoyi.user.mapper.RegionMapper;
import com.ruoyi.user.service.RegionService;
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.springframework.stereotype.Service;
+
+import java.text.Collator;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* <p>
@@ -17,4 +29,78 @@
@Service
public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements RegionService {
+ @Override
+ public Object urbanArea(String keyword) {
+ LambdaQueryChainWrapper<Region> wrapper = this.lambdaQuery()
+ .ne(Region::getParentId, Constants.ZERO);
+ if (StringUtils.isNotBlank(keyword)) {
+ wrapper.like(Region::getName, keyword);
+ }
+ // 获取所有市区信息
+ List<Region> reginList = wrapper.orderByAsc(Region::getId).list();
+ List<String> data = reginList.stream().map(Region::getName).collect(Collectors.toList());
+ Map<String, Object> px = px(data);
+ return px;
+ // 根据市区首字母分组排序
+// data.sort(new Comparator<String>() {
+// final Collator collator = Collator.getInstance(Locale.CHINA);
+//
+// @Override
+// public int compare(String o1, String o2) {
+// CollationKey key1 = collator.getCollationKey(o1);
+// CollationKey key2 = collator.getCollationKey(o2);
+// return key1.compareTo(key2);
+// }
+// });
+// return reginList;
+ }
+
+ /**
+ * 获取汉字串拼音,英文字符不变
+ *
+ * @param chinese 汉字串
+ * @return 汉语拼音
+ */
+ public String getFullSpell(String chinese) {
+ StringBuilder pybf = new StringBuilder();
+ char[] arr = chinese.toCharArray();
+ HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
+ defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
+ defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+ for (int i = 0; i < arr.length; i++) {
+ if (arr[i] > 128) {
+ try {
+ pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
+ } catch (BadHanyuPinyinOutputFormatCombination e) {
+ e.printStackTrace();
+ }
+ } else {
+ pybf.append(arr[i]);
+ }
+ }
+ return pybf.toString();
+ }
+
+ public Map<String, Object> px(List<String> list) {
+ Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
+ // 按字母排序
+ Collections.sort(list, com);
+ //输出26个字母
+ Map<String, Object> map = new TreeMap<>();
+ for (int i = 1; i <= 26; i++) {
+ //循环找出 首字母一样的数据
+ String word = String.valueOf((char) (96 + i)).toUpperCase();
+ List<String> letter = new ArrayList<>();
+ for (String str : list) {
+ // System.out.println("首字母"+zm);
+ String zm = getFullSpell(str).substring(0, 1);
+ if (word.equals(zm)) {
+ letter.add(str);
+ }
+ map.put(word, letter);
+ }
+ //System.out.println(JsoN.to]soNString(map));
+ }
+ return map;
+ }
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserCollectServiceImpl.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserCollectServiceImpl.java
index 46c0fc2..7ac3d05 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserCollectServiceImpl.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserCollectServiceImpl.java
@@ -1,13 +1,13 @@
package com.ruoyi.user.service.impl;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.user.entity.UserCollect;
import com.ruoyi.user.mapper.UserCollectMapper;
import com.ruoyi.user.service.UserCollectService;
import com.ruoyi.user.vo.UserCollectVO;
import org.springframework.stereotype.Service;
-
-import java.util.List;
/**
* <p>
@@ -21,7 +21,7 @@
public class UserCollectServiceImpl extends ServiceImpl<UserCollectMapper, UserCollect> implements UserCollectService {
@Override
- public List<UserCollectVO> collectList(Integer userid) {
- return baseMapper.collectList(userid);
+ public IPage<UserCollectVO> collectList(Integer userid, Page<UserCollectVO> page) {
+ return baseMapper.collectList(userid, page);
}
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java
index 765dc51..f2b8f7f 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java
@@ -1,17 +1,29 @@
package com.ruoyi.user.service.impl;
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.api.WxMaUserService;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
+import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
+import cn.hutool.core.util.RandomUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.system.api.model.LoginUserInfo;
import com.ruoyi.user.entity.User;
import com.ruoyi.user.mapper.UserMapper;
import com.ruoyi.user.service.UserService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
/**
* <p>
@@ -24,11 +36,20 @@
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
- @Value("wx.appId")
+ @Resource
+ private WxMaUserService wxMaUserService;
+ @Resource
+ private TokenService tokenService;
+ @Resource
+ private WxMaService wxMaService;
+
+ @Value("${wx.appId}")
private String appId;
- @Value("wx.appSecret")
+ @Value("${wx.appSecret}")
private String appSecret;
+
+ private final String BASE_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code";
@Override
public R<String> decodeOpenid(HttpServletResponse response, String code) {
@@ -48,9 +69,91 @@
JSONObject json = JSONObject.parseObject(res);
//获取openid
String openid = json.getString("openid");
- return R.ok(openid);
+ return R.ok(openid, "");
} catch (Exception e) {
return R.fail("openId生成失败!");
}
}
+
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public HashMap<String, Object> decodeUserInfo(String code, String encryptedData, String ivStr) {
+ WxMaJscode2SessionResult session = null;
+ WxMaPhoneNumberInfo phoneNoInfo = null;
+ //获取session
+ try {
+ session = wxMaService.getUserService().getSessionInfo(code);
+ String sessionKey = session.getSessionKey();
+ phoneNoInfo = wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, ivStr);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ if (session != null && StringUtils.isNotBlank(session.getOpenid())) {
+ String openid = session.getOpenid();
+// String sessionKey = session.getSessionKey();
+ // 加密明文及初始向量转义
+// encryptedData = URLEncoder.encode(encryptedData, "UTF-8").replace("%3D", "=").replace("%2F", "/");
+// ivStr = URLEncoder.encode(ivStr, "UTF-8").replace("%3D", "=").replace("%2F", "/");
+// // 获取用户信息
+// String result = WxAesUtils.decryptData(WxAesUtils.getUrlDecoderString(encryptedData),
+// sessionKey,
+// WxAesUtils.getUrlDecoderString(ivStr));
+// JSONObject userJson = JSONObject.parseObject(result);
+ // 封装项目用户信息
+ if (null != phoneNoInfo) {
+ String phoneNumber = phoneNoInfo.getPhoneNumber();
+ User user = this.lambdaQuery().eq(User::getPhone, phoneNumber)
+ .eq(User::getIsDelete, 0).one();
+ if (null == user) {
+ user = new User();
+ user.setUserNo(String.format(Constants.USER_NO_PRE, RandomUtil.randomNumbers(Constants.EIGHT)));
+ user.setPhone(phoneNumber);
+ user.setState(Constants.ONE);
+ user.setOpenId(openid);
+ user.setIsDelete(Constants.ZERO);
+ this.save(user);
+ } else {
+ Integer state = user.getState();
+ if (state == 0) {
+ throw new GlobalException("该账号未开启,无法进行登录!");
+ }
+ }
+ // 校验通过,生成token及过期时间
+ LoginUserInfo loginUserInfo = new LoginUserInfo();
+ loginUserInfo.setName(user.getPhone());
+ loginUserInfo.setUserid(user.getId());
+ loginUserInfo.setPhone(user.getPhone());
+ loginUserInfo.setLoginTime(System.currentTimeMillis());
+ HashMap<String, Object> map = new HashMap<>(8);
+ map.put("token", tokenService.createTokenByUser(loginUserInfo));
+ return map;
+ }
+ }
+ return null;
+ }
+
+
+ public JSONObject getPhone(String code) {
+ // 授权(必填)
+ String grantType = "client_credential";
+ // 向微信服务器 使用登录凭证 code 获取 session_key 和 openid
+ // 请求参数
+ String params2 = "appid=" + appId + "&secret=" + appSecret + "&grant_type=" + grantType;
+ // 发送请求
+ String sr2 = com.ruoyi.user.vx.utils.HttpRequest.sendGet("https://api.weixin.qq.com/cgi-bin/token", params2);
+ // 解析相应内容(转换成json对象)
+ JSONObject json2 = JSONObject.parseObject(sr2);
+ String accessToken = json2.getString("access_token");
+ //使用获取到的token和接受到的code像微信获取手机号
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("code", code);
+ String url = ("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + accessToken);
+ String sr3 = com.ruoyi.user.vx.utils.HttpRequest.sendPostNew(url, jsonObject);
+ JSONObject json = JSONObject.parseObject(sr3);
+ JSONObject phoneInfo = json.getJSONObject("phone_info");
+// return phoneInfo.getString("phoneNumber");
+ return phoneInfo;
+ }
+
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/WithdrawServiceImpl.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/WithdrawServiceImpl.java
index 3b8ebaf..23f05de 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/WithdrawServiceImpl.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/WithdrawServiceImpl.java
@@ -1,35 +1,27 @@
package com.ruoyi.user.service.impl;
-import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.admin.api.entity.WithdrawalSetting;
-import com.ruoyi.admin.api.feignClient.AdminClient;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.constant.Constants;
-import com.ruoyi.common.core.constant.WechatConstants;
import com.ruoyi.common.core.exception.GlobalException;
-import com.ruoyi.common.core.utils.SnowflakeIdWorker;
-import com.ruoyi.user.entity.Order;
+import com.ruoyi.order.api.entity.Order;
+import com.ruoyi.order.api.feignClient.WithdrawClient;
import com.ruoyi.user.entity.RecoveryServe;
import com.ruoyi.user.entity.User;
-import com.ruoyi.user.entity.Withdraw;
-import com.ruoyi.user.mapper.WithdrawMapper;
-import com.ruoyi.user.service.OrderService;
import com.ruoyi.user.service.RecoveryServeService;
import com.ruoyi.user.service.UserService;
import com.ruoyi.user.service.WithdrawService;
import com.ruoyi.user.vo.WithdrawListVO;
import com.ruoyi.user.vo.WithdrawMoneyVO;
import com.ruoyi.user.vo.WithdrawOrderVO;
-import com.ruoyi.user.vx.HttpUtil;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -39,71 +31,38 @@
* @since 2024-06-07
*/
@Service
-public class WithdrawServiceImpl extends ServiceImpl<WithdrawMapper, Withdraw> implements WithdrawService {
+public class WithdrawServiceImpl implements WithdrawService {
- /**
- * 雪花算法类
- */
- private static final SnowflakeIdWorker SNOW_FLAKE_ID_WORKER = new SnowflakeIdWorker(5, 5);
-
- @Resource
- private OrderService orderService;
@Resource
private RecoveryServeService recoveryServeService;
@Resource
private UserService userService;
@Resource
- private AdminClient adminClient;
- /**
- * 小程序id
- */
- @Value("wx.appid")
- private String appId;
- /**
- * 转账名称
- */
- @Value("wx.batchName")
- private String batchName;
- /**
- * 商户号
- */
- @Value("wx.mchId")
- private String mchId;
- /**
- * 支付证书序列号
- */
- @Value("wx.wechatPayserialNo")
- private String wechatPayserialNo;
- /**
- * 转账备注
- */
- @Value("wx.transferRemark")
- private String transferRemark;
+ private WithdrawClient withdrawClient;
@Override
- public WithdrawListVO withdrawList(Integer userid) {
+ public WithdrawListVO withdrawList(Integer userid, Integer pageNum, Integer pageSize) {
WithdrawListVO withdrawList = new WithdrawListVO();
- List<Order> orderList = orderService.lambdaQuery().eq(Order::getUserId, userid)
- .eq(Order::getState, 3).eq(Order::getIsDelete, 0).list();
+ Page<Order> orderList = withdrawClient.withdrawListByUser(userid, pageNum, pageSize).getData();
// 总金额
BigDecimal totalMoney = BigDecimal.ZERO;
// 未提现金额
BigDecimal undelivered = BigDecimal.ZERO;
// 已提现金额
BigDecimal withdrawn = BigDecimal.ZERO;
- if (!orderList.isEmpty()) {
+ if (!orderList.getRecords().isEmpty()) {
// 总金额
- totalMoney = orderList.stream().map(Order::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ totalMoney = orderList.getRecords().stream().map(Order::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
// 未提现金额
- undelivered = orderList.stream().filter(data -> Constants.ZERO.equals(data.getIsWithdrawal()))
+ undelivered = orderList.getRecords().stream().filter(data -> Constants.ZERO.equals(data.getIsWithdrawal()))
.map(Order::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
// 已提现金额
- withdrawn = orderList.stream().filter(data -> Constants.ONE.equals(data.getIsWithdrawal()))
+ withdrawn = orderList.getRecords().stream().filter(data -> Constants.ONE.equals(data.getIsWithdrawal()))
.map(Order::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
}
withdrawList.setMoneyCount(new WithdrawMoneyVO(totalMoney, undelivered, withdrawn));
// 回收服务列表
- List<Integer> serveIds = orderList.stream().map(Order::getServeId).collect(Collectors.toList());
+ List<Integer> serveIds = orderList.getRecords().stream().map(Order::getServeId).collect(Collectors.toList());
LambdaQueryChainWrapper<RecoveryServe> wrapper = recoveryServeService.lambdaQuery()
.eq(RecoveryServe::getIsDelete, 0);
wrapper = serveIds.isEmpty() ? wrapper : wrapper.in(RecoveryServe::getId, serveIds);
@@ -111,7 +70,7 @@
Map<Integer, RecoveryServe> serveMap = serveList.stream().collect(Collectors.toMap(RecoveryServe::getId, serve -> serve));
// 订单列表
List<WithdrawOrderVO> list = new ArrayList<>();
- for (Order order : orderList) {
+ for (Order order : orderList.getRecords()) {
RecoveryServe recoveryServe = serveMap.get(order.getServeId());
WithdrawOrderVO withdrawOrder = new WithdrawOrderVO();
withdrawOrder.setOrderId(order.getId());
@@ -122,112 +81,27 @@
withdrawOrder.setCover(recoveryServe.getCover());
withdrawOrder.setCompleteTime(order.getCompleteTime());
withdrawOrder.setIsWithdrawal(order.getIsWithdrawal());
+ withdrawOrder.setMoney(order.getOrderMoney());
list.add(withdrawOrder);
}
- withdrawList.setWithdrawOrder(list);
+ Page<WithdrawOrderVO> page = new Page<>();
+ page.setSize(orderList.getSize());
+ page.setCurrent(orderList.getCurrent());
+ page.setPages(orderList.getPages());
+ page.setTotal(orderList.getTotal());
+ page.setRecords(list);
+ withdrawList.setWithdrawOrder(page);
return withdrawList;
}
@Override
@Transactional(rollbackFor = Exception.class)
- public Boolean confirmWithdraw(Integer orderId, Integer userid) {
+ public Boolean confirmWithdraw(String orderId, Integer userid) {
User user = userService.lambdaQuery().eq(User::getId, userid).eq(User::getIsDelete, 0).one();
- Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
- if (null == order) {
- throw new GlobalException("订单信息异常!");
+ if (null == user) {
+ throw new GlobalException("提现失败,登录用户信息异常!");
}
- // 校验提现
- List<Withdraw> list = this.lambdaQuery().eq(Withdraw::getUserId, userid)
- .eq(Withdraw::getOrderId, order).list();
- List<Integer> stateList = list.stream().map(Withdraw::getState).collect(Collectors.toList());
- if (stateList.contains(Constants.ZERO)) {
- throw new GlobalException("当前订单已提交提现申请,请等待审核!");
- } else if (stateList.contains(Constants.ONE)) {
- throw new GlobalException("当前订单已提现通过!");
- }
- // 系统审核设置
- WithdrawalSetting setting = adminClient.withdrawProcess().getData();
- Withdraw withdraw = new Withdraw();
- // 未开启全局 提现审核,则用户提现不需要后台审核
- if (Constants.ZERO.equals(setting.getEnableProcess())) {
- // 已通过
- withdraw.setState(Constants.ONE);
- // 商家微信打款至微信零钱
- boolean update = weChatPay(order.getOrderMoney(), user.getOpenId());
- if (!update) {
- throw new GlobalException("交易提现失败,请检查是否绑定微信!");
- }
- } else {
- // 待审核
- withdraw.setState(Constants.ZERO);
- }
- withdraw.setUserId(user.getId());
- withdraw.setUserPhone(user.getPhone());
- withdraw.setApplyForTime(new Date());
- withdraw.setApplyForMoney(order.getOrderMoney());
- withdraw.setOrderId(orderId);
- return this.save(withdraw);
- }
-
- private boolean weChatPay(BigDecimal orderMoney, String openId) {
- Map<String, Object> postMap = new HashMap<>(8);
- // 小程序 id
- postMap.put(WechatConstants.APP_ID, appId);
- postMap.put(WechatConstants.OUT_BATCH_NO, String.valueOf(UUID.randomUUID()).replaceAll("-", ""));
- // 该笔批量转账的名称
- postMap.put(WechatConstants.BATCH_NAME, batchName);
- // 转账说明,UTF8编码,最多允许32个字符
- postMap.put(WechatConstants.BATCH_REMARK, batchName);
- // 转账金额单位为“分”。 总金额
- postMap.put(WechatConstants.TOTAL_AMOUNT, orderMoney.multiply(new BigDecimal(Constants.ONE_HUNDRED)));
- // 转账总笔数
- postMap.put(WechatConstants.TOTAL_NUM, Constants.ONE);
- List<Map<String, Object>> list = new ArrayList<>();
- Map<String, Object> subMap = new HashMap<>(4);
- // 商家明细单号 该商家下唯一
- // subMap.put("out_detail_no", RandomUtil.randomString(32))
- subMap.put(WechatConstants.OUT_DETAIL_NO, SNOW_FLAKE_ID_WORKER.nextId());
- // 转账金额
- subMap.put(WechatConstants.TRANSFER_AMOUNT, orderMoney);
- // 转账备注
- subMap.put(WechatConstants.TRANSFER_REMARK, transferRemark);
- // 用户在直连商户应用下的用户标示
- subMap.put(WechatConstants.OPEN_ID, openId);
- // 大金额需要传入真实姓名
- /*subMap.put("user_name",
- RsaCryptoUtil.encryptOAEP(userName,WechatPayV3Util.getSaveCertificates(privatekeypath)))*/
- list.add(subMap);
- postMap.put(WechatConstants.TRANSFER_DETAIL_LIST, list);
- // 使用类加载器获取资源 URL
- ClassPathResource classPathResource = new ClassPathResource("vx/apiclient_key.pem");
- /*// 获取 resources 目录下的文件路径,假设文件路径为 "resources/data/example.txt"
- String filePath = "resources/data/vx/apiclient_key.pem";
- File file = new File(filePath);
- // 输出文件的绝对路径
- String absolutePath = file.getAbsolutePath();*/
- String result = HttpUtil.postTransBatRequest(
- WechatConstants.WE_CHAT_URL_PRE,
- JSONObject.toJSONString(postMap),
- // 支付证书序列号
- wechatPayserialNo,
- // 商户号
- mchId,
- classPathResource.getPath(), WechatConstants.WE_CHAT_URL_SUF);
- JSONObject jsonObject = JSONObject.parseObject(result);
- /*
- * 成功示例
- * {
- * "out_batch_no": "plfk2020042013",
- * "batch_id": "1030000071100999991182020050700019480001",
- * "create_time": "2015-05-20T13:29:35.120+08:00"
- * }
- */
- if (null == jsonObject || null != jsonObject.get(WechatConstants.CREATE_TIME)) {
- //转账成功
- return Boolean.TRUE;
- } else {
- return Boolean.FALSE;
- }
+ return withdrawClient.confirmWithdrawByUser(orderId, userid, user.getOpenId(), user.getPhone()).getData();
}
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/utils/changeChinesePinyinUtil.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/utils/changeChinesePinyinUtil.java
new file mode 100644
index 0000000..79bd3fc
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/utils/changeChinesePinyinUtil.java
@@ -0,0 +1,161 @@
+/*
+package com.ruoyi.user.utils;
+
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.ruoyi.user.entity.Region;
+import ev.viewworld.model.sysuser;
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
+public class changeChinesePinyinUtil {
+ */
+/**
+ * 获取姓名全拼和首字母
+ * @author 于公成
+ * @param chinese 汉语名称
+ * @return fullPinyin : 全拼 simplePinyin : 首字母 groupPinyin:微信用户组第一个字母
+ * @throws BadHanyuPinyinOutputFormatCombination
+ *//*
+
+ public static Map<String, String> changeChinesePinyin(String chinese) throws BadHanyuPinyinOutputFormatCombination {
+ Map<String, String> pinyin = new HashMap<String, String>();
+
+ HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
+ format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+ format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+ format.setVCharType(HanyuPinyinVCharType.WITH_V);
+
+ StringBuffer fullPinyin = new StringBuffer();
+ StringBuffer simplePinyin = new StringBuffer();
+ StringBuffer firstPinyin = new StringBuffer();
+
+ char[] chineseChar = chinese.toCharArray();
+ for (int i = 0; i < chineseChar.length; i++) {
+ String[] str = null;
+ try {
+ str = PinyinHelper.toHanyuPinyinStringArray(chineseChar[i],
+ format);
+ } catch (BadHanyuPinyinOutputFormatCombination e) {
+ e.printStackTrace();
+ }
+ if (str != null) {
+ fullPinyin = fullPinyin.append(str[0].toString());
+ simplePinyin = simplePinyin.append(str[0].charAt(0));
+
+ }
+ if (str == null) {
+ String regex = "^[0-9]*[a-zA-Z]*+$";
+ Pattern pattern = Pattern.compile(regex);
+ Matcher m = pattern.matcher(String.valueOf(chineseChar[i]));
+ if (m.find()) {
+ fullPinyin = fullPinyin.append(chineseChar[i]);
+ simplePinyin = simplePinyin.append(chineseChar[i]);
+ }
+ }
+ }
+ String[] name = PinyinHelper.toHanyuPinyinStringArray(chineseChar[0],format);
+ firstPinyin=firstPinyin.append(name[0].charAt(0));
+ pinyin.put("fullPinyin", fullPinyin.toString());
+ pinyin.put("simplePinyin", simplePinyin.toString().toUpperCase());
+ pinyin.put("groupPinyin", firstPinyin.toString().toUpperCase());
+ return pinyin;
+ }
+ */
+/**
+ * 按拼音首字母分组
+ * @author 于公成
+ * @param list
+ * @return
+ * @throws BadHanyuPinyinOutputFormatCombination
+ *//*
+
+ public static Map<String, Object> getCodeGroup(List<String> list) throws BadHanyuPinyinOutputFormatCombination {
+ Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
+ //按字母排序
+ Collections.sort(list, com);
+ //输出26个字母
+ Map<String, Object> map = new TreeMap<String, Object>();
+ for(int i=1;i<=26;i++){
+ String word = String. valueOf((char) (96 + i)). toUpperCase();
+ //循环找出首字母一样的数据
+ List<String> letter = new ArrayList<String>();
+ for (String str : list) {
+ String code=changeChinesePinyin(str).get("groupPinyin");
+ if(word.equals(code)) {
+ letter.add(str);
+ }
+ System.out.println(str);
+ }
+ map.put(word, letter);
+ }
+ System.out.println(map);
+ return map;
+ }
+
+ */
+/**
+ * @author 于公成
+ * 按用户拼音首字母分组
+ * @param list
+ * @return
+ * @throws BadHanyuPinyinOutputFormatCombination
+ *//*
+
+ public static Map<String, List<Region>> getUserCodeGroup(List<Region> list) throws BadHanyuPinyinOutputFormatCombination {
+ //Collections工具类的sort()方法对list集合元素排序
+ Collections.sort(list,new Comparator<Region>(){
+ @Override
+ public int compare(sysuser o1, sysuser o2) {
+ //获取中文环境
+ Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
+ return com.compare(o1.getRealname(),o2.getRealname());
+ }
+ });
+
+ //输出26个字母
+ Map<String, List<sysuser>> map = new TreeMap<String, List<sysuser>>();
+ for(int i=1;i<=26;i++){
+ String word = String. valueOf((char) (96 + i)). toUpperCase();
+ //循环找出首字母一样的数据
+ List<sysuser> letter = new ArrayList<sysuser>();
+ for (sysuser str : list) {
+
+ String code=changeChinesePinyin(str.getRealname()).get("groupPinyin");
+ if(word.equals(code)) {
+ letter.add(str);
+ }
+ System.out.println(str);
+ }
+ map.put(word, letter);
+ }
+ System.out.println(map);
+ return map;
+ }
+
+
+ public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {
+// System.out.println(changeChinesePinyin("于公成").get("groupPinyin"));
+ List<String> list=new ArrayList<String>();
+ list.add("于公成");
+ list.add("由于工程");
+ list.add("与工程");
+ list.add("王为");
+ list.add("刘汝祥");
+ list.add("阿宝");
+ list.add("阿亮");
+ getCodeGroup(list);
+ }
+}*/
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/OrderDetailVO.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/OrderDetailVO.java
index da1246a..b20cf25 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/OrderDetailVO.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/OrderDetailVO.java
@@ -1,6 +1,7 @@
package com.ruoyi.user.vo;
-import com.ruoyi.user.entity.Order;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.order.api.entity.Order;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -16,7 +17,7 @@
public class OrderDetailVO {
@ApiModelProperty("订单id")
- private Integer orderId;
+ private String orderId;
@ApiModelProperty("订单编号")
private String orderNumber;
@@ -52,12 +53,15 @@
private Integer state;
@ApiModelProperty("接单时间(师傅接单或后台派单,更新该字段时间)")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
private Date acceptTime;
@ApiModelProperty("师傅到达预约地点时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
private Date arriveTime;
@ApiModelProperty("订单完成时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
private Date completeTime;
@ApiModelProperty("订单补贴金额")
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/UserServeTypeVO.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/UserServeTypeVO.java
new file mode 100644
index 0000000..f00ea24
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/UserServeTypeVO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.user.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author HJL
+ * @version 1.0
+ * @since 2024-07-10 8:50
+ */
+@Data
+public class UserServeTypeVO {
+
+ @ApiModelProperty("所属分类id")
+ private Integer classifyId;
+
+ @ApiModelProperty("所属分类名称")
+ private String classifyName;
+
+ @ApiModelProperty("分类图标")
+ private String classificationPicture;
+
+ @ApiModelProperty("分类描述")
+ private String typeDescribe;
+
+ @ApiModelProperty("服务类型(0:以旧换新;1:家电回收)")
+ private Integer type;
+
+ public UserServeTypeVO(Integer classifyId, String classifyName, String classificationPicture, String typeDescribe, Integer type) {
+ this.classifyId = classifyId;
+ this.classifyName = classifyName;
+ this.classificationPicture = classificationPicture;
+ this.typeDescribe = typeDescribe;
+ this.type = type;
+ }
+}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/WithdrawListVO.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/WithdrawListVO.java
index d216eff..26310e8 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/WithdrawListVO.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/WithdrawListVO.java
@@ -1,9 +1,8 @@
package com.ruoyi.user.vo;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-
-import java.util.List;
/**
* @author HJL
@@ -17,6 +16,6 @@
private WithdrawMoneyVO moneyCount;
@ApiModelProperty("提现订单列表")
- private List<WithdrawOrderVO> withdrawOrder;
+ private Page<WithdrawOrderVO> withdrawOrder;
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/WithdrawOrderVO.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/WithdrawOrderVO.java
index 9119789..458b2f2 100644
--- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/WithdrawOrderVO.java
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vo/WithdrawOrderVO.java
@@ -3,6 +3,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
import java.util.Date;
/**
@@ -14,7 +15,7 @@
public class WithdrawOrderVO {
@ApiModelProperty("订单id")
- private Integer orderId;
+ private String orderId;
@ApiModelProperty("订单编号")
private String orderNumber;
@@ -37,4 +38,7 @@
@ApiModelProperty("是否已提现(0:未提现,1:已提现)")
private Integer isWithdrawal;
+ @ApiModelProperty("订单金额")
+ private BigDecimal money;
+
}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/AppConfig.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/AppConfig.java
new file mode 100644
index 0000000..bb683f1
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/AppConfig.java
@@ -0,0 +1,42 @@
+package com.ruoyi.user.vx.utils;
+
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.api.WxMaUserService;
+import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
+import cn.binarywang.wx.miniapp.api.impl.WxMaUserServiceImpl;
+import cn.binarywang.wx.miniapp.config.WxMaConfig;
+import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 微信小程序授权登录 配置类
+ *
+ * @author HJL
+ */
+@Configuration
+public class AppConfig {
+
+
+ @Bean
+ public WxMaService wxMaService() {
+ WxMaService service = new WxMaServiceImpl();
+ service.setWxMaConfig(memberWxMaConfig());
+ return service;
+ }
+
+ @Bean
+ public WxMaUserService wxMaUserService() {
+ WxMaService service = new WxMaServiceImpl();
+ service.setWxMaConfig(memberWxMaConfig());
+ return new WxMaUserServiceImpl(service);
+ }
+
+ @Bean
+ public WxMaConfig memberWxMaConfig() {
+ WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
+ config.setAppid("wx98563d0ec9cf21c8");
+ config.setSecret("81787f8e9a3b920fa357be8e81ba61b1");
+ return config;
+ }
+}
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/HttpRequest.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/HttpRequest.java
new file mode 100644
index 0000000..07f6a96
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/HttpRequest.java
@@ -0,0 +1,188 @@
+package com.ruoyi.user.vx.utils;
+
+import com.alibaba.fastjson2.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author HJL
+ */
+public class HttpRequest {
+
+ /**
+ * 向指定URL发送GET方法的请求
+ *
+ * @param url 发送请求的URL
+ * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+ * @return URL 所代表远程资源的响应结果
+ */
+ public static String sendGet(String url, String param) {
+ StringBuilder result = new StringBuilder();
+ BufferedReader in = null;
+ try {
+ String urlNameString;
+ if (null == param) {
+ urlNameString = url;
+ } else {
+ urlNameString = url + "?" + param;
+ }
+ URL realUrl = new URL(urlNameString);
+ // 打开和URL之间的连接
+ URLConnection connection = realUrl.openConnection();
+ // 设置通用的请求属性
+ connection.setRequestProperty("accept", "*/*");
+ connection.setRequestProperty("connection", "Keep-Alive");
+ connection.setRequestProperty("user-agent",
+ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+ // 建立实际的连接
+ connection.connect();
+ // 获取所有响应头字段
+ Map<String, List<String>> map = connection.getHeaderFields();
+ // 遍历所有的响应头字段
+ for (String key : map.keySet()) {
+ System.out.println(key + "--->" + map.get(key));
+ }
+ // 定义 BufferedReader输入流来读取URL的响应
+ in = new BufferedReader(new InputStreamReader(
+ connection.getInputStream()));
+ String line;
+ while ((line = in.readLine()) != null) {
+ result.append(line);
+ }
+ } catch (Exception e) {
+ System.out.println("发送GET请求出现异常!" + e);
+ e.printStackTrace();
+ }
+ // 使用finally块来关闭输入流
+ finally {
+ try {
+ if (in != null) {
+ in.close();
+ }
+ } catch (Exception e2) {
+ e2.printStackTrace();
+ }
+ }
+ return result.toString();
+ }
+
+ /**
+ * 向指定 URL 发送POST方法的请求
+ *
+ * @param url 发送请求的 URL
+ * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+ * @return 所代表远程资源的响应结果
+ */
+ public static String sendPost(String url, String param) {
+ PrintWriter out = null;
+ BufferedReader in = null;
+ StringBuilder result = new StringBuilder();
+ try {
+ URL realUrl = new URL(url);
+ // 打开和URL之间的连接
+ URLConnection conn = realUrl.openConnection();
+ // 设置通用的请求属性
+ conn.setRequestProperty("accept", "*/*");
+ conn.setRequestProperty("connection", "Keep-Alive");
+ conn.setRequestProperty("user-agent",
+ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+ // 发送POST请求必须设置如下两行
+ conn.setDoOutput(true);
+ conn.setDoInput(true);
+ // 获取URLConnection对象对应的输出流
+ out = new PrintWriter(conn.getOutputStream());
+ // 发送请求参数
+ out.print(param);
+ // flush输出流的缓冲
+ out.flush();
+ // 定义BufferedReader输入流来读取URL的响应
+ in = new BufferedReader(
+ new InputStreamReader(conn.getInputStream()));
+ String line;
+ while ((line = in.readLine()) != null) {
+ result.append(line);
+ }
+ } catch (Exception e) {
+ System.out.println("发送 POST 请求出现异常!" + e);
+ e.printStackTrace();
+ }
+ //使用finally块来关闭输出流、输入流
+ finally {
+ try {
+ if (out != null) {
+ out.close();
+ }
+ if (in != null) {
+ in.close();
+ }
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+ return result.toString();
+ }
+
+ /**
+ * 向指定 URL 发送POST方法的请求
+ *
+ * @param url 发送请求的 URL
+ * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+ * @return 所代表远程资源的响应结果
+ */
+ public static String sendPostNew(String url, JSONObject param) {
+ PrintWriter out = null;
+ BufferedReader in = null;
+ String result = "";
+ try {
+ URL realUrl = new URL(url);
+ // 打开和URL之间的连接
+ URLConnection conn = realUrl.openConnection();
+ // 设置通用的请求属性
+ conn.setRequestProperty("accept", "*/*");
+ conn.setRequestProperty("connection", "Keep-Alive");
+ conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+ // 发送POST请求必须设置如下两行
+ conn.setDoOutput(true);
+ conn.setDoInput(true);
+ // 获取URLConnection对象对应的输出流
+ out = new PrintWriter(conn.getOutputStream());
+ // 发送请求参数
+ out.print(param);
+ // flush输出流的缓冲
+ out.flush();
+ // 定义BufferedReader输入流来读取URL的响应
+ in = new BufferedReader(
+ new InputStreamReader(conn.getInputStream()));
+ String line;
+ while ((line = in.readLine()) != null) {
+ result += line;
+ }
+ } catch (Exception e) {
+ System.out.println("发送 POST 请求出现异常!" + e);
+ e.printStackTrace();
+ }
+ //使用finally块来关闭输出流、输入流
+ finally {
+ try {
+ if (out != null) {
+ out.close();
+ }
+ if (in != null) {
+ in.close();
+ }
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/WeChatUtil.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/WeChatUtil.java
new file mode 100644
index 0000000..dbcb957
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/WeChatUtil.java
@@ -0,0 +1,507 @@
+/*
+package com.ruoyi.user.vx.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.util.RedisUtil;
+import com.stylefeng.guns.modular.system.util.UUIDUtil;
+import com.stylefeng.guns.modular.system.util.httpClinet.HttpClientUtil;
+import com.stylefeng.guns.modular.system.util.httpClinet.HttpResult;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.*;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.*;
+import java.net.URLDecoder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+
+*/
+/**
+ * 微信工具类
+ *//*
+
+@Component
+public class WeChatUtil {
+
+ private static Logger logger = LoggerFactory.getLogger(WeChatUtil.class);
+
+ @Value("${wx.appletsAppid}")
+ private String wxAppletsAppid;
+
+ @Value("${wx.appletsAppSecret}")
+ private String wxAppletsAppSecret;
+
+ @Value("${wx.officialAccountAppid}")
+ private String officialAccountAppid;
+
+ @Value("{wx.officialAccountAppSecret}")
+ private String officialAccountAppSecret;
+
+ @Value("${wx.appid}")
+ private String webAppId;
+
+ @Value("${wx.appSecret}")
+ private String webAppSecret;
+
+ @Autowired
+ private HttpClientUtil httpClientUtil;
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ @Autowired
+ private RedisUtil redisUtil;
+ // 获取微信用户access_token的接口地址
+ private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token";
+ // 获取微信用户信息的接口地址
+ private static final String USER_INFO_URL = "https://api.weixin.qq.com/sns/userinfo";
+ {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ Thread.sleep(30000);
+ new Timer().schedule(new TimerTask() {
+ @Override
+ public void run() {
+ try {
+ String wxAppletsAccessToken = getWxAppletsAccessToken();
+ if(ToolUtil.isEmpty(wxAppletsAccessToken)){
+ System.err.println("获取微信小程序access_token失败");
+ }
+ redisUtil.setStrValue("wxAppletsAccessToken", wxAppletsAccessToken, 7000);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }, 0, 7000000);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }).start();
+
+ }
+
+
+ */
+/**
+ * 小程序使用jscode获取openid
+ * @param jscode
+ * @return
+ *//*
+
+ public Map<String, Object> code2Session(String jscode) throws Exception{
+ String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret
+ + "&js_code=" + jscode + "&grant_type=authorization_code";
+// String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+wxAppletsAppid+"&secret="+wxAppletsAppSecret+"&code="+jscode+"&grant_type=authorization_code";
+ HttpResult httpResult = httpClientUtil.pushHttpRequset("GET", url, null, null, "form");
+ if(null == httpResult || httpResult.getCode() != 200){
+ return null;
+ }
+ JSONObject jsonObject = JSON.parseObject(httpResult.getData());
+ int errcode = jsonObject.getIntValue("errcode");
+ Map<String, Object> map = new HashMap<>();
+ System.err.println("调用返回"+jsonObject);
+ System.err.println("响应结果"+httpResult);
+ if(errcode == 0){//成功
+ Map<String, Object> userInfo = getUserInfo(jsonObject.getString("session_key"), jsonObject.getString("openid"));
+ System.err.println(userInfo);
+ // 用户名
+// String nickname = userInfo.get("nickname").toString();
+// // 用户头像
+// String headimgurl = userInfo.get("headimgurl").toString();
+// System.err.println("用户名:"+nickname);
+// System.err.println("头像:"+headimgurl);
+ map.put("openid", jsonObject.getString("openid"));
+ map.put("sessionKey", jsonObject.getString("session_key"));
+ map.put("unionid", jsonObject.getString("unionid"));
+ String wxAppletsAccessToken = getWxAppletsAccessToken();
+ System.err.println("看看accesstoken:"+wxAppletsAccessToken);
+ Map<String, Object> openid = getUserInfo(wxAppletsAccessToken, jsonObject.getString("openid"));
+ System.err.println("用户信息:"+ openid);
+ return map;
+ }
+ if(errcode == -1){//系统繁忙,此时请开发者稍候再试
+ map.put("msg", jsonObject.getString("errmsg"));
+ return map;
+ }
+ if(errcode == 40029){//code 无效
+ map.put("msg", jsonObject.getString("errmsg"));
+ return map;
+ }
+ if(errcode == 45011){//频率限制,每个用户每分钟100次
+ map.put("msg", jsonObject.getString("errmsg"));
+ return map;
+ }
+ if(errcode == 40226){//高风险等级用户,小程序登录拦截 。
+ map.put("msg", jsonObject.getString("errmsg"));
+ }
+ map.put("msg", jsonObject.getString("errmsg"));
+ return map;
+ }
+
+
+ */
+/**
+ * 获取微信小程序token
+ * @return
+ *//*
+
+ public String getWxAppletsAccessToken() throws Exception{
+ String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret;
+ HttpResult httpResult = httpClientUtil.pushHttpRequset("GET", url, null, null, "form");
+ if(httpResult.getCode() != 200){
+ return "";
+ }
+ System.err.println("获取AAAAAAAAAAAAAAAAAAAAAAAAAA:"+httpResult);
+ JSONObject jsonObject = JSON.parseObject(httpResult.getData());
+ return jsonObject.getString("access_token");
+ }
+
+
+ */
+/***
+ * 获取jsapiTicket(小程序)
+ * 来源 www.vxzsk.com
+ * @return
+ *//*
+
+ public String getWxAppletsJSApiTicket() throws Exception{
+ String wxAppletsAccessToken = redisUtil.getValue("wxAppletsAccessToken");
+ String urlStr = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + wxAppletsAccessToken + "&type=jsapi";
+ HttpResult httpResult = httpClientUtil.pushHttpRequset("GET", urlStr, null, null, "form");
+ if(httpResult.getCode() != 200){
+ return null;
+ }
+ logger.debug(httpResult.getData());
+ String ticket = JSONObject.parseObject(httpResult.getData()).getString("ticket");
+ return ticket;
+ }
+
+ */
+/**
+ * 通过config接口注入权限验证配置(小程序)
+ * 附录1-JS-SDK使用权限签名算法,
+ * @return
+ *//*
+
+ public Map<String,Object> getWxAppletsSignatureConfig(String url) throws Exception{
+ //获取token
+ try {
+ url = URLDecoder.decode(url, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ String ticket = getWxAppletsJSApiTicket();
+ String noncestr = UUIDUtil.getRandomCode();
+ Long timestamp = System.currentTimeMillis();
+ String content = "jsapi_ticket=" + ticket + "&noncestr=" + noncestr + "×tamp=" + timestamp + "&url=" + url;
+ String signature = DigestUtils.sha1Hex(content);
+ Map<String,Object> map=new HashMap<>();
+ map.put("appId", wxAppletsAppid);
+ map.put("timestamp", timestamp);
+ map.put("nonceStr", noncestr);
+ map.put("signature", signature);
+ return map;
+ }
+
+ */
+/**
+ * 网站应用登录
+ * @param code
+ * @return
+ *//*
+
+ public Map<String, String> webAccessToken(String code) throws Exception{
+ String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + webAppId + "&secret=" + webAppSecret + "&code=" + code + "&grant_type=authorization_code";
+ HttpResult httpResult = httpClientUtil.pushHttpRequset("GET", url, null, null, "form");
+ if(httpResult.getCode() != 200){
+ return null;
+ }
+ JSONObject jsonObject = JSON.parseObject(httpResult.getData());
+ int errcode = jsonObject.getIntValue("errcode");
+ Map<String, String> map = new HashMap<>();
+ if(errcode == 0){//成功
+ map.put("access_token", jsonObject.getString("access_token"));
+ map.put("openid", jsonObject.getString("openid"));
+ map.put("refresh_token", jsonObject.getString("refresh_token"));
+ map.put("unionid", jsonObject.getString("unionid"));
+ return map;
+ }
+ if(errcode == -1){//系统繁忙,此时请开发者稍候再试
+ map.put("msg", jsonObject.getString("errmsg"));
+ return map;
+ }
+ if(errcode == 40029){//code 无效
+ map.put("msg", jsonObject.getString("errmsg"));
+ return map;
+ }
+ if(errcode == 45011){//频率限制,每个用户每分钟100次
+ map.put("msg", jsonObject.getString("errmsg"));
+ return map;
+ }
+ return map;
+ }
+
+
+ */
+/**
+ * 获取微信个人信息
+ * @param access_token
+ * @param openid
+ * @return
+ *//*
+
+ public Map<String, Object> getUserInfo(String access_token, String openid) throws Exception{
+ String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid;
+ HttpResult httpResult = httpClientUtil.pushHttpRequset("GET", url, null, null, "form");
+ if(httpResult.getCode() != 200){
+ return null;
+ }
+ JSONObject jsonObject = JSON.parseObject(httpResult.getData());
+ int errcode = jsonObject.getIntValue("errcode");
+ Map<String, Object> map = new HashMap<>();
+ if(errcode == 0){//成功
+ map.put("nickname", jsonObject.getString("nickname"));
+ map.put("openid", jsonObject.getString("openid"));
+ map.put("sex", jsonObject.getString("sex"));
+ map.put("headimgurl", jsonObject.getString("headimgurl"));
+ return map;
+ }
+ if(errcode == -1){//系统繁忙,此时请开发者稍候再试
+ map.put("msg", jsonObject.getString("errmsg"));
+ return map;
+ }
+ if(errcode == 40029){//code 无效
+ map.put("msg", jsonObject.getString("errmsg"));
+ return map;
+ }
+ if(errcode == 45011){//频率限制,每个用户每分钟100次
+ map.put("msg", jsonObject.getString("errmsg"));
+ return map;
+ }
+ return map;
+ }
+
+
+ */
+/**
+ * 公众号获取openid
+ * @param code
+ * @return
+ *//*
+
+ public Map<String,Object> getOpenId(String code) throws Exception{
+ if (code == null || code.length() == 0) {
+ return null;
+ }
+ String grantType = "authorization_code";
+ String params = "appid=" + officialAccountAppid + "&secret=" + officialAccountAppSecret + "&code=" + code + "&grant_type=" + grantType;
+ logger.debug("sssss"+params);
+ HttpResult httpResult = httpClientUtil.pushHttpRequset("GET", "https://api.weixin.qq.com/sns/oauth2/access_token?" + params, null, null, "form");
+ if(httpResult.getCode() != 200){
+ return null;
+ }
+ JSONObject json = JSON.parseObject(httpResult.getData());
+ logger.debug(json.toJSONString());
+ String openId = json.get("openid").toString();
+ String accessToken = json.get("access_token").toString();
+ Integer expiresIn = json.getInteger("expires_in");
+ String refresh_token = json.getString("refresh_token");
+ String unionid = json.getString("unionid");
+ Map<String,Object> map=new HashMap<>();
+ map.put("openId",openId);
+ map.put("accessToken",accessToken);
+ map.put("expiresIn", expiresIn);
+ map.put("refreshToken", refresh_token);
+ map.put("unionid", unionid);
+ return map;
+ }
+
+ */
+/**
+ * 获取微信用户的access_token
+ *
+ * @param code 微信小程序登录时获取的code
+ * @return 包含access_token和openid的Map
+ * @throws Exception
+ *//*
+
+ public Map<String, String> getAccessToken(String code) throws Exception {
+ OkHttpClient client = new OkHttpClient();
+ String url = ACCESS_TOKEN_URL + "?appid=" + wxAppletsAppid+ "&secret=" + wxAppletsAppSecret + "&code=" + code
+ + "&grant_type=authorization_code";
+ Request request = new Request.Builder().url(url).get().build();
+ Response response = client.newCall(request).execute();
+ String responseStr = response.body().string();
+ System.err.println("响应结果"+responseStr);
+ JSONObject jsonObject = JSON.parseObject(responseStr);
+ String accessToken = jsonObject.getString("access_token");
+ String openid = jsonObject.getString("openid");
+ Map<String, String> map = new HashMap<>();
+ map.put("access_token", accessToken);
+ map.put("openid", openid);
+ return map;
+ }
+
+ */
+/***
+ * 获取acess_token (公众号)
+ * 来源www.vxzsk.com
+ * @return
+ *//*
+
+ public String getAccessToken() throws Exception{
+ String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + officialAccountAppid
+ + "&secret=" + officialAccountAppSecret;
+ HttpResult httpResult = httpClientUtil.pushHttpRequset("GET", url, null, null, "form");
+ if(httpResult.getCode() != 200){
+ return null;
+ }
+ String accessToken = JSONObject.parseObject(httpResult.getData()).getString("access_token");
+ return accessToken;
+ }
+
+ */
+/***
+ * 获取jsapiTicket(公众号)
+ * 来源 www.vxzsk.com
+ * @return
+ *//*
+
+ public String getJSApiTicket() throws Exception{
+ //获取token
+ String acess_token = redisUtil.getValue("acess_token");
+ String urlStr = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + acess_token + "&type=jsapi";
+ HttpResult httpResult = httpClientUtil.pushHttpRequset("GET", urlStr, null, null, "form");
+ if(httpResult.getCode() != 200){
+ return null;
+ }
+ logger.debug(httpResult.getData());
+ String ticket = JSONObject.parseObject(httpResult.getData()).getString("ticket");
+ return ticket;
+ }
+
+ */
+/**
+ * 通过config接口注入权限验证配置(公众号)
+ * 附录1-JS-SDK使用权限签名算法,
+ * @return
+ *//*
+
+ public Map<String,Object> getSignatureConfig(String url) throws Exception{
+ //获取token
+ try {
+ url = URLDecoder.decode(url, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ String ticket = getJSApiTicket();
+ String noncestr = UUIDUtil.getRandomCode();
+ Long timestamp = System.currentTimeMillis();
+ String content = "jsapi_ticket=" + ticket + "&noncestr=" + noncestr + "×tamp=" + timestamp + "&url=" + url;
+ String signature = DigestUtils.sha1Hex(content);
+ Map<String,Object> map=new HashMap<>();
+ map.put("appId", officialAccountAppid);
+ map.put("timestamp", timestamp);
+ map.put("nonceStr", noncestr);
+ map.put("signature", signature);
+ return map;
+ }
+
+
+ */
+/**
+ * 公众号获取用户个人信息
+ * @param access_token
+ * @param openid
+ * @return
+ *//*
+
+ public Map<String, Object> queryUserInfo(String access_token, String openid) throws Exception{
+ String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid + "&lang=zh_CN";
+ HttpResult httpResult = httpClientUtil.pushHttpRequset("GET", url, null, null, "form");
+ if(httpResult.getCode() != 200){
+ return null;
+ }
+ logger.debug(httpResult.getData());
+ JSONObject j = JSON.parseObject(httpResult.getData());
+ Map<String, Object> map = new HashMap<>();
+ map.put("nickname", j.getString("nickname"));
+ map.put("sex", j.getInteger("sex"));
+ map.put("headimgurl", j.getString("headimgurl"));
+ map.put("unionid", j.getString("unionid"));
+ return map;
+ }
+
+
+ */
+/**
+ * 获取小程序二维码
+ * @param page 跳转页 例如 pages/index/index
+ * @param scene 参数 a=1&b=2
+ *//*
+
+ public InputStream getwxacodeunlimit(String page, String scene, String envVersion) throws Exception{
+ try {
+ String wxAppletsAccessToken = redisUtil.getValue("wxAppletsAccessToken");
+ String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + wxAppletsAccessToken;
+ Map<String, Object> param = new HashMap<>();
+ param.put("scene", scene);
+ param.put("page", page);
+ param.put("env_version", envVersion);
+ HttpHeaders httpHeaders = new HttpHeaders();
+ MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8");
+ httpHeaders.setContentType(type);
+ HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders);
+ ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
+ byte[] body = entity.getBody();
+ return new ByteArrayInputStream(body);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ */
+/**
+ * 获取小程序urlscheme码
+ * @return
+ *//*
+
+ public String getUrlscheme(String path) throws Exception{
+ String wxAppletsAccessToken = redisUtil.getValue("wxAppletsAccessToken");
+ String url = "https://api.weixin.qq.com/wxa/generatescheme?access_token=" + wxAppletsAccessToken;
+ Map<String, Object> param = new HashMap<>();
+ param.put("is_expire", true);
+ param.put("expire_type", 1);
+ param.put("expire_interval", 180);
+ Map<String, Object> map1 = new HashMap<>();
+ map1.put("path", path);
+ map1.put("query", "");
+ map1.put("env_version", "release");
+ param.put("jump_wxa", map1);
+ HttpHeaders httpHeaders = new HttpHeaders();
+ MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8");
+ httpHeaders.setContentType(type);
+ HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders);
+ ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
+ String body1 = exchange.getBody();
+ return body1;
+ }
+}
+*/
diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/WxAesUtils.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/WxAesUtils.java
new file mode 100644
index 0000000..3fa2561
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/vx/utils/WxAesUtils.java
@@ -0,0 +1,112 @@
+package com.ruoyi.user.vx.utils;
+
+import org.apache.commons.codec.binary.Base64;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.UnsupportedEncodingException;
+import java.security.Key;
+import java.security.Security;
+import java.util.Arrays;
+
+/**
+ * 微信通讯加解密类
+ *
+ * @author HJL
+ */
+public class WxAesUtils {
+
+
+ public static void main(String[] args) {
+ String s = decryptData("bmdheU9pKVKVyJOH8CR3mqp4mEeKZ1YOuMsVxXJKjRdc47rolEoe85JKAVEWmP2hl4NZB66qxN/NHHGsy0PqCn7hS4cLKqTgERXcYO0dURt2JuLg1myhG+PYhi0AROwfJytGBv77u8yinmMfyyKx6lSegkqnlIJ6TBIDYe2LCvW3kRVDzNDeWT0hOaLiRI6n3TFQwI0b5Tiu48UbFTHDhAtJ6LaZY+wg+PdtrHDgjWtt46pinENV22GFt77a6iIhdT4GzaW7ln45HuENtzXJLR5yM7SwT2pxKMGEknJGJD3yf/DxnR6a8HpXrwxtXHJfDlUzNS+Af51fOS/Z52LpbtvRecoEz8KKUxJ9lpcK1HrO/RMw/iYf+ce1bu5VIpYyMjTNAoLdffZ7V0HGMrVJUGbQMqk7ZjdCk1eqMyPpuIOuektgKE7K5wHqeo3NVo7A",
+ "6pOQ1+4ca2ATDaSg4gauVA==",
+ "zzmYGLoLH548Vf0fdJHHvA==");
+ System.out.println(s);
+ }
+
+ public static String decryptData(String encryptDataB64, String sessionKeyB64, String ivB64) {
+ String data = null;
+ try {
+ data = new String(
+ decryptOfDiyIv(
+ Base64.decodeBase64(encryptDataB64),
+ Base64.decodeBase64(sessionKeyB64),
+ Base64.decodeBase64(ivB64)
+ )
+ );
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return data;
+ }
+
+ private static final String KEY_ALGORITHM = "AES";
+ private static final String ALGORITHM_STR = "AES/CBC/PKCS7Padding";
+ private static Key key;
+ private static Cipher cipher;
+
+ private static void init(byte[] keyBytes) {
+ // 如果密钥不足16位,那么就补足. 这个if 中的内容很重要
+ int base = 16;
+ if (keyBytes.length % base != 0) {
+ int groups = keyBytes.length / base + (keyBytes.length % base != 0 ? 1 : 0);
+ byte[] temp = new byte[groups * base];
+ Arrays.fill(temp, (byte) 0);
+ System.arraycopy(keyBytes, 0, temp, 0, keyBytes.length);
+ keyBytes = temp;
+ }
+ // 初始化
+ Security.addProvider(new BouncyCastleProvider());
+ // 转化成JAVA的密钥格式
+ key = new SecretKeySpec(keyBytes, KEY_ALGORITHM);
+ try {
+ // 初始化cipher
+ cipher = Cipher.getInstance(ALGORITHM_STR, "BC");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 解密方法
+ *
+ * @param encryptedData 要解密的字符串
+ * @param keyBytes 解密密钥
+ * @param ivs 自定义对称解密算法初始向量 iv
+ * @return 解密后的字节数组
+ */
+ private static byte[] decryptOfDiyIv(byte[] encryptedData, byte[] keyBytes, byte[] ivs) {
+ byte[] encryptedText = null;
+ init(keyBytes);
+ try {
+ cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(ivs));
+ encryptedText = cipher.doFinal(encryptedData);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return encryptedText;
+ }
+
+ /**
+ * 解码
+ *
+ * @param str 加密敏感数据
+ * @return 解码结果
+ */
+ public static String getUrlDecoderString(String str) {
+
+ String result = "";
+ if (null == str) {
+ return "";
+ }
+ try {
+ result = java.net.URLDecoder.decode(str, "GBK");
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-user/src/main/resources/bootstrap.yaml b/ruoyi-service/ruoyi-user/src/main/resources/bootstrap.yaml
index 774d315..20eff32 100644
--- a/ruoyi-service/ruoyi-user/src/main/resources/bootstrap.yaml
+++ b/ruoyi-service/ruoyi-user/src/main/resources/bootstrap.yaml
@@ -22,11 +22,17 @@
service: ${spring.application.name}
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
name: ${spring.application.name}
# 配置文件格式
file-extension: yml
diff --git a/ruoyi-service/ruoyi-user/src/main/resources/mapper/user/EvaluateMapper.xml b/ruoyi-service/ruoyi-user/src/main/resources/mapper/user/EvaluateMapper.xml
index 082dc4d..910acf8 100644
--- a/ruoyi-service/ruoyi-user/src/main/resources/mapper/user/EvaluateMapper.xml
+++ b/ruoyi-service/ruoyi-user/src/main/resources/mapper/user/EvaluateMapper.xml
@@ -33,19 +33,4 @@
<result column="createTime" property="evaluateTime"/>
</association>
</resultMap>
- <select id="orderEvaluate" resultMap="evaluateMap">
- SELECT o.id,o.order_number,
- o.complete_time,
- r.serve_name,
- r.serve_describe,
- r.cover,
- o.server_name,
- o.server_phone,
- e.content,
- e.star_rating,
- e.createTime
- FROM t_order o
- LEFT JOIN t_evaluate e on o.id = e.order_id
- LEFT JOIN sys_recovery_serve r on o.serve_id = r.id
- </select>
</mapper>
diff --git a/ruoyi-service/ruoyi-user/src/main/resources/mapper/user/RecoveryServePriceMapper.xml b/ruoyi-service/ruoyi-user/src/main/resources/mapper/user/RecoveryServePriceMapper.xml
new file mode 100644
index 0000000..721ece4
--- /dev/null
+++ b/ruoyi-service/ruoyi-user/src/main/resources/mapper/user/RecoveryServePriceMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.user.mapper.RecoveryServePriceMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.user.entity.RecoveryServePrice">
+ <id column="id" property="id" />
+ <result column="recovery_serve_id" property="recoveryServeId" />
+ <result column="recovery_price" property="recoveryPrice" />
+ <result column="city" property="city" />
+ <result column="createBy" property="createBy" />
+ <result column="updateBy" property="updateBy" />
+ <result column="createTime" property="createTime" />
+ <result column="updateTime" property="updateTime" />
+ <result column="is_delete" property="isDelete" />
+ </resultMap>
+
+</mapper>
diff --git a/ruoyi-service/ruoyi-user/src/main/resources/mapper/user/WithdrawMapper.xml b/ruoyi-service/ruoyi-user/src/main/resources/mapper/user/WithdrawMapper.xml
deleted file mode 100644
index 91618df..0000000
--- a/ruoyi-service/ruoyi-user/src/main/resources/mapper/user/WithdrawMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.user.mapper.WithdrawMapper">
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="com.ruoyi.user.entity.Withdraw">
- <id column="id" property="id"/>
- <result column="user_id" property="userId"/>
- <result column="user_phone" property="userPhone"/>
- <result column="apply_for_time" property="applyForTime"/>
- <result column="apply_for_money" property="applyForMoney"/>
- <result column="state" property="state"/>
- <result column="opinion" property="opinion"/>
- <result column="createBy" property="createBy"/>
- <result column="updateBy" property="updateBy"/>
- <result column="createTime" property="createTime"/>
- <result column="updateTime" property="updateTime"/>
- <result column="is_delete" property="isDelete"/>
- </resultMap>
-</mapper>
diff --git a/ruoyi-service/ruoyi-worker/pom.xml b/ruoyi-service/ruoyi-worker/pom.xml
index 20c7de5..be097c9 100644
--- a/ruoyi-service/ruoyi-worker/pom.xml
+++ b/ruoyi-service/ruoyi-worker/pom.xml
@@ -122,6 +122,12 @@
<artifactId>ruoyi-common-log</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-api-order</artifactId>
+ <version>3.6.4</version>
+ </dependency>
+
<!-- RuoYi Common Swagger -->
<dependency>
<groupId>com.ruoyi</groupId>
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/config/MyDateObjectHandler.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/config/MyDateObjectHandler.java
index a72de61..5e4a140 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/config/MyDateObjectHandler.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/config/MyDateObjectHandler.java
@@ -1,12 +1,9 @@
package com.ruoyi.worker.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
-import com.ruoyi.common.security.service.TokenService;
-import com.ruoyi.system.api.model.LoginUserInfo;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
import java.util.Date;
/**
@@ -16,8 +13,6 @@
*/
@Component
public class MyDateObjectHandler implements MetaObjectHandler {
- @Resource
- private TokenService tokenService;
/**
* mybatisPlus新增修改自动插入当前时间
@@ -26,23 +21,21 @@
*/
@Override
public void insertFill(MetaObject metaObject) {
- LoginUserInfo user = tokenService.getLoginUserByWorker();
// 创建时间
this.setFieldValByName("createTime", new Date(), metaObject);
// 更新时间
this.setFieldValByName("updateTime", new Date(), metaObject);
// 创建人
- this.setFieldValByName("createBy", null == user ? "" : user.getName(), metaObject);
- this.setFieldValByName("updateBy", null == user ? "" : user.getName(), metaObject);
+ this.setFieldValByName("createBy", "", metaObject);
+ this.setFieldValByName("updateBy", "", metaObject);
// 是否软删除
this.setFieldValByName("isDelete", 0, metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
- LoginUserInfo user = tokenService.getLoginUserByWorker();
// 修改时间为当前时间
this.setFieldValByName("updateTime", new Date(), metaObject);
- this.setFieldValByName("updateBy", null == user ? "" : user.getName(), metaObject);
+ this.setFieldValByName("updateBy", "", metaObject);
}
}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/MasterWorkerController.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/MasterWorkerController.java
index f346771..7b425ce 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/MasterWorkerController.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/MasterWorkerController.java
@@ -10,6 +10,8 @@
import com.ruoyi.common.security.auth.AuthUtil;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.order.api.entity.WorkerOrderCountVO;
+import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.system.api.model.LoginUserInfo;
import com.ruoyi.worker.entity.MasterWorker;
import com.ruoyi.worker.entity.WorkerProcess;
@@ -18,7 +20,6 @@
import com.ruoyi.worker.service.MasterWorkerService;
import com.ruoyi.worker.service.WorkerProcessService;
import com.ruoyi.worker.vo.HomePageInfoVO;
-import com.ruoyi.worker.vo.OrderCountVO;
import com.ruoyi.worker.vo.OrderListVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -58,6 +59,8 @@
private WorkerProcessService workerProcessService;
@Resource
private AdminClient adminClient;
+ @Resource
+ private OrderClient orderClient;
/**
* 师傅端-密码登录
@@ -141,10 +144,15 @@
WorkerProcess process = workerProcessService.lambdaQuery()
.eq(WorkerProcess::getPhone, phone)
.eq(WorkerProcess::getIsDelete, 0).one();
- if (Constants.ZERO.equals(process.getState())) {
- return R.fail("入驻申请暂未审核通过,请耐心等待!");
- } else if (Constants.TWO.equals(process.getState())) {
- return R.fail("入驻申请已驳回,请重新提交入驻申请!");
+ if (null != process) {
+ if (Constants.ZERO.equals(process.getState())) {
+ return R.fail("入驻申请暂未审核通过,请耐心等待!");
+ } else if (Constants.TWO.equals(process.getState())) {
+// return R.fail("入驻申请已驳回,请重新提交入驻申请!");
+ return R.fail("当前手机号未注册!");
+ } else {
+ return R.registered("当前账号未提交入驻申请,无法登录!");
+ }
} else {
return R.registered("当前账号未提交入驻申请,无法登录!");
}
@@ -180,31 +188,31 @@
// 校验手机号是否已提交申请
WorkerProcess dbProcess = workerProcessService.lambdaQuery()
.eq(WorkerProcess::getPhone, phone)
- .eq(WorkerProcess::getIsDelete, 0).one();
+ .eq(WorkerProcess::getIsDelete, 0)
+ .orderByDesc(WorkerProcess::getCreateTime).last("limit 1").one();
if (null != dbProcess) {
if (Constants.ZERO.equals(dbProcess.getState())) {
return R.fail("入驻申请已提交,审核未通过,请耐心等待!");
} else if (Constants.ONE.equals(dbProcess.getState())) {
return R.fail("该手机号入驻申请已通过,请通过手机号登录!");
}
- } else {
- // 默认状态待审核
- workerProcess.setState(Constants.ZERO);
- // 获取用户性别
- String idNumber = workerProcess.getIdNumber();
- // 判断身份证号码长度是否合法
- if (idNumber.length() == Constants.EIGHTEEN) {
- // 获取身份证号码倒数第二位的数字
- int genderNum = Integer.parseInt(idNumber.substring(16, 17));
- // 判断性别
- if (genderNum % Constants.TWO == 0) {
- workerProcess.setSex("女");
- } else {
- workerProcess.setSex("男");
- }
+ }
+ // 默认状态待审核
+ workerProcess.setState(Constants.ZERO);
+ // 获取用户性别
+ String idNumber = workerProcess.getIdNumber();
+ // 判断身份证号码长度是否合法
+ if (idNumber.length() == Constants.EIGHTEEN) {
+ // 获取身份证号码倒数第二位的数字
+ int genderNum = Integer.parseInt(idNumber.substring(16, 17));
+ // 判断性别
+ if (genderNum % Constants.TWO == 0) {
+ workerProcess.setSex("女");
} else {
- return R.idNumberIllegal("身份证号码不合法!");
+ workerProcess.setSex("男");
}
+ } else {
+ return R.idNumberIllegal("身份证号码不合法!");
}
return workerProcessService.save(workerProcess) ? R.ok("申请成功!") : R.fail("申请失败!");
}
@@ -232,7 +240,8 @@
return R.errorCode("验证码错误或已过期!");
}
// 手机号是否注册
- MasterWorker worker = masterWorkerService.lambdaQuery().eq(MasterWorker::getPhone, phone)
+ MasterWorker worker = masterWorkerService.lambdaQuery()
+ .eq(MasterWorker::getPhone, phone)
.eq(MasterWorker::getIsDelete, 0).one();
if (null == worker) {
return R.registered("该手机号未提交入驻申请!");
@@ -294,7 +303,7 @@
return R.registered("当前账号未注册!");
}
// 订单统计
- OrderCountVO orderCount = masterWorkerService.orderCount(masterWorker.getId());
+ WorkerOrderCountVO orderCount = orderClient.orderStateCount(masterWorker.getId()).getData();
// 操作指导详情
Agreement agreement = adminClient.dataInfo(Constants.TWO).getData();
return R.ok(new HomePageInfoVO(masterWorker, orderCount,
@@ -319,6 +328,23 @@
}
/**
+ * 师傅端-订单代办列表
+ */
+ @ApiOperation(value = "订单代办列表", tags = {"师傅端-首页"})
+ @GetMapping(value = "/orderMapMode")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "师傅所在经度", name = "longitude", dataType = "String", required = true),
+ @ApiImplicitParam(value = "师傅所在纬度", name = "latitude", dataType = "String", required = true)
+ })
+ public R<List<OrderListVO>> orderMapMode(@RequestParam String longitude, @RequestParam String latitude) {
+ LoginUserInfo loginWorker = tokenService.getLoginUserByWorker();
+ if (null == loginWorker) {
+ return R.loginExpire("登录已失效!");
+ }
+ return R.ok(masterWorkerService.orderMapMode(loginWorker.getUserid(), longitude, latitude));
+ }
+
+ /**
* 师傅端-操作指南
*/
@ApiOperation(value = "操作指南", tags = {"师傅端-首页"})
@@ -336,12 +362,12 @@
*/
@ApiOperation(value = "订单置顶", tags = {"师傅端-首页"})
@GetMapping(value = "/orderTop")
- public R<Boolean> orderTop(@RequestParam Integer orderId) {
+ public R<Boolean> orderTop(@RequestParam String orderId) {
LoginUserInfo loginWorker = tokenService.getLoginUserByWorker();
if (null == loginWorker) {
return R.loginExpire("登录已失效!");
}
- return masterWorkerService.orderTop(orderId, loginWorker.getUserid()) ? R.ok() : R.fail();
+ return orderClient.orderTop(orderId, loginWorker.getUserid());
}
/**
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OrderController.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OrderController.java
index db2b943..d0c05bc 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OrderController.java
@@ -1,18 +1,26 @@
package com.ruoyi.worker.controller;
-import com.ruoyi.admin.api.entity.ChangeDispatch;
-import com.ruoyi.admin.api.feignClient.AdminClient;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.GlobalException;
import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.GaoDeMapUtil;
import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.api.entity.ChangeDispatch;
+import com.ruoyi.order.api.entity.Order;
+import com.ruoyi.order.api.entity.OrderDetailVO;
+import com.ruoyi.order.api.entity.OrderSubmitRequest;
+import com.ruoyi.order.api.feignClient.ExchangeDispatchClient;
+import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.system.api.model.LoginUserInfo;
-import com.ruoyi.worker.entity.*;
-import com.ruoyi.worker.request.OrderSubmitRequest;
-import com.ruoyi.worker.service.*;
-import com.ruoyi.worker.vo.OrderDetailVO;
+import com.ruoyi.worker.entity.MasterWorker;
+import com.ruoyi.worker.entity.RecoveryServe;
+import com.ruoyi.worker.entity.ServeCoordinate;
+import com.ruoyi.worker.service.MasterWorkerService;
+import com.ruoyi.worker.service.RecoveryServeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -21,9 +29,16 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.util.Date;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
/**
* <p>
@@ -39,19 +54,21 @@
public class OrderController {
@Resource
- private OrderService orderService;
- @Resource
private TokenService tokenService;
- @Resource
- private AdminClient adminClient;
@Resource
private MasterWorkerService masterWorkerService;
@Resource
- private ServeRecordService serveRecordService;
+ private OrderClient orderClient;
@Resource
- private EvaluateService evaluateService;
+ private ExchangeDispatchClient dispatchClient;
@Resource
- private SysServeCoordinateService serveCoordinateService;
+ private RecoveryServeService recoveryServeService;
+
+ /**
+ * linux服务器保存订单轨迹文件夹
+ */
+ private static final String BASE_PATH = "/usr/local/coordinate/";
+// private static final String BASE_PATH = "D:/Desktop/coordinate/";
/**
* 师傅端-获取订单列表
@@ -63,12 +80,26 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "订单状态(0:全部、1:待上门、2:已完结)", name = "state", dataType = "Integer", required = true)
})
- public R<List<Order>> orderList(@RequestParam Integer state) {
+ public R<Page<Order>> orderList(@RequestParam Integer state,
+ @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+ @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
LoginUserInfo loginWorker = tokenService.getLoginUserByWorker();
if (null == loginWorker) {
return R.loginExpire("登录失效!");
}
- return R.ok(orderService.orderList(loginWorker.getUserid(), state));
+ Page<Order> dataList = orderClient.orderListWorker(loginWorker.getUserid(), state, pageNum, pageSize).getData();
+ List<Order> orderList = dataList.getRecords();
+ List<Integer> ids = orderList.stream().map(Order::getServeId).collect(Collectors.toList());
+ if (!ids.isEmpty()) {
+ List<RecoveryServe> serveList = recoveryServeService.lambdaQuery()
+ .in(RecoveryServe::getId, ids).eq(RecoveryServe::getIsDelete, 0).list();
+ Map<Integer, String> map = serveList.stream().collect(Collectors.toMap(RecoveryServe::getId,
+ mw -> Optional.ofNullable(mw.getCover()).orElse("")));
+ for (Order order : orderList) {
+ order.setCover(map.get(order.getServeId()));
+ }
+ }
+ return R.ok(dataList);
}
/**
@@ -79,18 +110,22 @@
@ApiOperation(value = "申请订单改派", tags = {"师傅端-订单列表"})
@GetMapping(value = "/applyChange")
@ApiImplicitParams({
- @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true),
@ApiImplicitParam(value = "改派原因", name = "reason", dataType = "String", required = true)
})
@Transactional(rollbackFor = Exception.class)
- public R<String> applyChange(@RequestParam Integer orderId, @RequestParam String reason) {
+ public R<String> applyChange(@RequestParam String orderId, @RequestParam String reason) {
LoginUserInfo loginWorker = tokenService.getLoginUserByWorker();
if (null == loginWorker) {
return R.loginExpire("登录失效!");
}
- ChangeDispatch data = adminClient.changeDispatchOne(orderId).getData();
+ ChangeDispatch data = dispatchClient.changeDispatchOne(orderId).getData();
if (null != data) {
- return R.fail("当前订单已提交改派申请!");
+ if (Constants.ZERO.equals(data.getState())) {
+ return R.fail("当前订单已提交改派申请,请等待改派!");
+ } else if (Constants.ONE.equals(data.getState())) {
+ return R.fail("当前等单已改派!");
+ }
}
MasterWorker masterWorker = masterWorkerService.getById(loginWorker.getUserid());
// 订单改派信息
@@ -100,7 +135,8 @@
changeDispatch.setApplyReason(reason);
changeDispatch.setApplyTime(DateUtils.getNowDate());
changeDispatch.setState(0);
- Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
+ Boolean result = orderClient.changeOrderState(orderId, Constants.SIX).getData();
+ Order order = orderClient.detail(orderId).getData();
if (null == order) {
throw new GlobalException("订单信息异常!");
}
@@ -109,8 +145,42 @@
changeDispatch.setUserId(order.getUserId());
changeDispatch.setUserName(order.getReservationName());
// 添加改派信息
- Boolean save = adminClient.changeDispatchSave(changeDispatch).getData();
- return save ? R.ok() : R.fail();
+ Boolean save = dispatchClient.changeDispatchSave(changeDispatch).getData();
+ return result && save ? R.ok() : R.fail();
+ }
+
+ /**
+ * 师傅端-已到达预约地点
+ *
+ * @param orderId 订单id
+ */
+ @ApiOperation(value = "订单路线导航", tags = {"师傅端-首页"})
+ @GetMapping(value = "/checkDistance")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true),
+ @ApiImplicitParam(value = "师傅所在经度", name = "longitude", dataType = "String", required = true),
+ @ApiImplicitParam(value = "师傅所在纬度", name = "latitude", dataType = "String", required = true)
+ })
+ public R<Object> checkDistance(@RequestParam String orderId, @RequestParam String longitude,
+ @RequestParam String latitude) {
+ LoginUserInfo loginWorker = tokenService.getLoginUserByWorker();
+ if (null == loginWorker) {
+ return R.loginExpire("登录失效!");
+ }
+ // 校验经纬度
+ Order order = orderClient.detail(orderId).getData();
+ // 用户下单位置经纬度
+ String orderPosition = order.getLongitude() + "," + order.getLatitude();
+ // 师傅经纬度
+ String workerPosition = longitude + "," + latitude;
+ // 师傅当前位置离用户下单位置具体距离
+ Long distance = GaoDeMapUtil.getDistance(orderPosition, workerPosition).getDatas();
+ // 上传时判断是否在下单位置附件,距离大于某个值则 不允许上传
+ if (distance > Constants.THREE_THOUSAND) {
+// throw new GlobalException("您当前手机定位超出当前订单预约地址范围 3km,无法提供回收服务!");
+ return R.fail(Boolean.FALSE, "您当前手机定位超出当前订单预约地址范围 3km,无法提供回收服务!");
+ }
+ return R.ok(true);
}
/**
@@ -121,29 +191,17 @@
@ApiOperation(value = "订单路线导航", tags = {"师傅端-首页"})
@GetMapping(value = "/orderNavigation")
@ApiImplicitParams({
- @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true),
@ApiImplicitParam(value = "师傅所在经度", name = "longitude", dataType = "String", required = true),
@ApiImplicitParam(value = "师傅所在纬度", name = "latitude", dataType = "String", required = true)
})
- public R<Object> orderNavigation(@RequestParam Integer orderId, @RequestParam String longitude,
+ public R<Object> orderNavigation(@RequestParam String orderId, @RequestParam String longitude,
@RequestParam String latitude) {
LoginUserInfo loginWorker = tokenService.getLoginUserByWorker();
if (null == loginWorker) {
return R.loginExpire("登录失效!");
}
- Order order = orderService.lambdaQuery().eq(Order::getId, orderId)
- .eq(Order::getServerId, loginWorker.getUserid())
- .eq(Order::getIsDelete, 0).one();
- if (null == order) {
- throw new GlobalException("请确认当前订单所派单师傅是否是您!");
- }
- // 用户下单经纬度
- Double userLongitude = order.getLongitude();
- Double userLatitude = order.getLatitude();
- String userPosition = userLongitude + "," + userLatitude;
- // 师傅当前位置 经纬度
- String workerPosition = longitude + "," + latitude;
- return R.ok(orderService.orderNavigation(userPosition, workerPosition));
+ return R.ok(orderClient.orderNavigation(orderId, loginWorker.getUserid(), longitude, latitude).getData());
}
/**
@@ -156,21 +214,12 @@
@ApiImplicitParams({
@ApiImplicitParam(value = "orderId", name = "orderId", dataType = "Integer", required = true)
})
- @Transactional(rollbackFor = Exception.class)
- public R<Boolean> reachPosition(@RequestParam Integer orderId) {
+ public R<Boolean> reachPosition(@RequestParam String orderId) {
LoginUserInfo loginWorker = tokenService.getLoginUserByWorker();
if (null == loginWorker) {
return R.loginExpire("登录失效!");
}
- Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getServerId, loginWorker.getUserid())
- .eq(Order::getIsDelete, 0).one();
- if (null == order) {
- throw new GlobalException("请确认当前订单所派单师傅是否是您!");
- }
- // 待完工状态
- order.setState(Constants.TWO);
- order.setArriveTime(new Date());
- return R.ok(orderService.updateById(order));
+ return orderClient.reachPosition(orderId, loginWorker.getUserid());
}
/**
@@ -181,17 +230,23 @@
@ApiOperation(value = "订单详情", tags = {"师傅端-订单列表"})
@GetMapping(value = "/orderDetail")
@ApiImplicitParams({
- @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "Integer", required = true)
+ @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true)
})
- public R<OrderDetailVO> orderDetail(@RequestParam Integer orderId) {
- // 订单信息
- Order order = orderService.lambdaQuery().eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one();
- // 服务信息(服务备注、上门时间、完成时间、完成所拍现场照片)
- ServeRecord serveRecord = serveRecordService.lambdaQuery().eq(ServeRecord::getOrderId, orderId)
- .eq(ServeRecord::getIsDelete, 0).one();
- // 评价信息
- Evaluate evaluate = evaluateService.lambdaQuery().eq(Evaluate::getOrderId, orderId).eq(Evaluate::getIsDelete, 0).one();
- return R.ok(new OrderDetailVO(order, serveRecord, evaluate));
+ public R<OrderDetailVO> orderDetail(@RequestParam String orderId) {
+ LoginUserInfo loginWorker = tokenService.getLoginUserByWorker();
+ if (null == loginWorker) {
+ return R.loginExpire("登录失效!");
+ }
+ R<OrderDetailVO> orderDetail = orderClient.orderDetail(orderId);
+ if (null == orderDetail) {
+ return R.fail();
+ }
+ OrderDetailVO data = orderDetail.getData();
+ Integer serveId = data.getOrderInfo().getServeId();
+ RecoveryServe recoveryServe = recoveryServeService.lambdaQuery()
+ .eq(RecoveryServe::getId, serveId).one();
+ data.getOrderInfo().setCover(recoveryServe.getCover());
+ return R.ok(data);
}
/**
@@ -201,24 +256,12 @@
*/
@ApiOperation(value = "订单完工-提交订单", tags = {"师傅端-订单列表"})
@PostMapping(value = "/orderSubmit")
- @Transactional(rollbackFor = Exception.class)
public R<Boolean> orderSubmit(@RequestBody OrderSubmitRequest orderSubmitRequest) {
- // 订单信息
- Order order = orderService.lambdaQuery().eq(Order::getId, orderSubmitRequest.getOrderId())
- .eq(Order::getIsDelete, 0).one();
- // 订单不存在,或订单状态异常(订单状态为2才可提交)
- if (null == order || !Constants.TWO.equals(order.getState())) {
- throw new GlobalException("订单不存在或订单状态异常!");
+ LoginUserInfo loginWorker = tokenService.getLoginUserByWorker();
+ if (null == loginWorker) {
+ return R.loginExpire("登录失效!");
}
- order.setCompleteTime(new Date());
- order.setState(Constants.THREE);
- boolean update = orderService.updateById(order);
- // 服务记录
- ServeRecord serveRecord = new ServeRecord();
- serveRecord.setOrderId(order.getId());
- serveRecord.setPhoto(String.join(",", orderSubmitRequest.getPhoto()));
- boolean save = serveRecordService.save(serveRecord);
- return R.ok(update && save);
+ return orderClient.orderSubmit(orderSubmitRequest);
}
/**
@@ -231,24 +274,70 @@
@ApiOperation(value = "订单进行-记录路线经纬度", tags = {"师傅端-订单列表"})
@GetMapping(value = "/coordinate")
@ApiImplicitParams({
- @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "Integer", required = true),
+ @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true),
@ApiImplicitParam(value = "经度", name = "longitude", dataType = "Integer", required = true),
@ApiImplicitParam(value = "纬度", name = "latitude", dataType = "Integer", required = true)
})
- @Transactional(rollbackFor = Exception.class)
- public R<Boolean> coordinate(@RequestParam Integer orderId, @RequestParam Double longitude,
+ public R<Boolean> coordinate(@RequestParam String orderId, @RequestParam Double longitude,
@RequestParam Double latitude) {
LoginUserInfo loginWorker = tokenService.getLoginUserByWorker();
if (null == loginWorker) {
return R.loginExpire("登录失效!");
}
- SysServeCoordinate sysServeCoordinate = new SysServeCoordinate();
- sysServeCoordinate.setWorkerId(loginWorker.getUserid());
- sysServeCoordinate.setOrderId(orderId);
- sysServeCoordinate.setCoordinate(longitude + "," + latitude);
- sysServeCoordinate.setLongitude(BigDecimal.valueOf(longitude));
- sysServeCoordinate.setLatitude(BigDecimal.valueOf(latitude));
- return R.ok(serveCoordinateService.save(sysServeCoordinate));
+ Integer workerId = loginWorker.getUserid();
+ ServeCoordinate serveCoordinate = new ServeCoordinate();
+ serveCoordinate.setWorkerId(workerId);
+ serveCoordinate.setOrderId(orderId);
+ serveCoordinate.setCoordinate(longitude + "," + latitude);
+ serveCoordinate.setLongitude(longitude);
+ serveCoordinate.setLatitude(latitude);
+ List<ServeCoordinate> list = new ArrayList<>();
+ list.add(serveCoordinate);
+ String jsonString = JSONObject.toJSONString(list);
+ // 检查师傅ID的文件夹是否存在,不存在则创建
+ String masterFolderPath = BASE_PATH + workerId;
+ File masterFolder = new File(masterFolderPath);
+ if (!masterFolder.exists()) {
+ // 创建师傅ID的文件夹
+ masterFolder.mkdirs();
+ }
+ // 检查订单ID的JSON文件是否存在,不存在则创建
+ String jsonFilePath = masterFolderPath + "/" + orderId + ".json";
+ File jsonFile = new File(jsonFilePath);
+ if (!jsonFile.exists()) {
+ try {
+ // 创建订单ID的JSON文件
+ jsonFile.createNewFile();
+ // 首次记录轨迹
+ FileWriter writer = new FileWriter(jsonFile);
+ writer.write(jsonString);
+ writer.close();
+ } catch (IOException e) {
+ return R.fail(e.getMessage());
+ }
+ } else {
+ // 读取订单ID的JSON文件内容
+ try {
+ String jsonContent = new String(Files.readAllBytes(Paths.get(jsonFilePath)));
+ System.out.println("JSON 文件内容:" + jsonContent);
+ List<ServeCoordinate> coordinate = JSONObject.parseObject(jsonContent, List.class);
+ // 订单轨迹信息
+ ServeCoordinate data = new ServeCoordinate();
+ data.setWorkerId(workerId);
+ data.setOrderId(orderId);
+ data.setCoordinate(longitude + "," + latitude);
+ data.setLongitude(longitude);
+ data.setLatitude(latitude);
+ coordinate.add(data);
+ String itemStr = JSONObject.toJSONString(coordinate);
+ FileWriter writer = new FileWriter(jsonFile);
+ writer.write(itemStr);
+ writer.close();
+ } catch (IOException e) {
+ return R.fail(e.getMessage());
+ }
+ }
+ return R.ok();
}
}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OssController.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OssController.java
index 500f7f4..9f45fc5 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OssController.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OssController.java
@@ -3,9 +3,9 @@
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.GaoDeMapUtil;
-import com.ruoyi.common.core.utils.ObsUploadUtil;
-import com.ruoyi.worker.entity.Order;
-import com.ruoyi.worker.service.OrderService;
+import com.ruoyi.order.api.entity.Order;
+import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.worker.utils.TencentCosUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -17,7 +17,6 @@
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
-import java.io.IOException;
/**
* @author HJL
@@ -30,7 +29,9 @@
public class OssController {
@Resource
- private OrderService orderService;
+ private OrderClient orderClient;
+ @Resource
+ private TencentCosUtil tencentCosUtil;
@PostMapping("/upload")
@ApiOperation(value = "文件上传", tags = "师傅端-文件上传")
@@ -38,11 +39,7 @@
@ApiImplicitParam(value = "文件", name = "file", dataType = "MultipartFile", required = true)
})
public R<String> upload(@RequestParam("file") MultipartFile file) {
- try {
- return R.ok(ObsUploadUtil.obsUpload(file), "");
- } catch (IOException e) {
- return R.fail("文件上传失败!");
- }
+ return R.ok(tencentCosUtil.upLoadFile(file));
}
@PostMapping("/uploadPhoto")
@@ -56,8 +53,7 @@
public R<Boolean> uploadPhoto(@RequestParam("file") MultipartFile file, @RequestParam String orderId,
@RequestParam String longitude, @RequestParam String latitude) {
// 校验经纬度
- Order order = orderService.lambdaQuery().eq(Order::getId, orderId)
- .eq(Order::getIsDelete, 0).one();
+ Order order = orderClient.detail(orderId).getData();
// 用户下单位置经纬度
String orderPosition = order.getLongitude() + "," + order.getLatitude();
// 师傅经纬度
@@ -69,11 +65,7 @@
// throw new GlobalException("您当前手机定位超出当前订单预约地址范围 3km,无法提供回收服务!");
return R.fail(Boolean.FALSE, "您当前手机定位超出当前订单预约地址范围 3km,无法提供回收服务!");
}
- try {
- return R.ok(ObsUploadUtil.obsUpload(file));
- } catch (IOException e) {
- return R.fail("文件上传失败!");
- }
+ return R.ok(tencentCosUtil.upLoadFile(file));
}
}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/ServeRecordController.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/ServeRecordController.java
deleted file mode 100644
index c99d8cb..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/ServeRecordController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.worker.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 师傅服务记录 前端控制器
- * </p>
- *
- * @author hjl
- * @since 2024-06-06
- */
-@RestController
-@RequestMapping("/serve-record")
-public class ServeRecordController {
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/WorkerProcessController.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/WorkerProcessController.java
deleted file mode 100644
index ababf17..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/WorkerProcessController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.worker.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 师傅入驻审核表 前端控制器
- * </p>
- *
- * @author hjl
- * @since 2024-06-04
- */
-@RestController
-@RequestMapping("/workerProcess")
-public class WorkerProcessController {
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/Evaluate.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/Evaluate.java
index 582368b..ec3153a 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/Evaluate.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/Evaluate.java
@@ -40,7 +40,7 @@
@ApiModelProperty("订单id")
@TableField("order_id")
- private Integer orderId;
+ private String orderId;
@ApiModelProperty("评价内容")
@TableField("content")
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/Order.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/Order.java
deleted file mode 100644
index dfe6c12..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/Order.java
+++ /dev/null
@@ -1,156 +0,0 @@
-package com.ruoyi.worker.entity;
-
-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.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.common.core.domain.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-/**
- * <p>
- * 订单管理
- * </p>
- *
- * @author hjl
- * @since 2024-06-05
- */
-@Getter
-@Setter
-@TableName("t_order")
-@ApiModel(value = "Order对象", description = "订单管理")
-public class Order extends BaseEntity {
-
- @TableId(value = "id", type = IdType.AUTO)
- private Integer id;
-
- @ApiModelProperty("下单城市")
- @TableField("city")
- private String city;
-
- @ApiModelProperty("订单编号")
- @TableField("order_number")
- private String orderNumber;
-
- @ApiModelProperty("站点id")
- @TableField("site_id")
- private Integer siteId;
-
- @ApiModelProperty("站点名称")
- @TableField("site_name")
- private String siteName;
-
- @ApiModelProperty("回收服务id")
- @TableField("serve_id")
- private Integer serveId;
-
- @ApiModelProperty("回收服务名称")
- @TableField("serve_name")
- private String serveName;
-
- @ApiModelProperty("回收服务的回收价")
- @TableField("serve_price")
- private BigDecimal servePrice;
-
- @ApiModelProperty("下单用户id")
- @TableField("user_id")
- private Integer userId;
-
- @ApiModelProperty("预约姓名")
- @TableField("reservation_name")
- private String reservationName;
-
- @ApiModelProperty("预约手机号")
- @TableField("reservation_phone")
- private String reservationPhone;
-
- @ApiModelProperty("预约地址")
- @TableField("reservation_address")
- private String reservationAddress;
-
- @ApiModelProperty("上门时间")
- @TableField("time")
- private String time;
-
- @ApiModelProperty("服务人员id")
- @TableField("server_id")
- private Integer serverId;
-
- @ApiModelProperty("服务人员名称")
- @TableField("server_name")
- private String serverName;
-
- @ApiModelProperty("服务人员手机号")
- @TableField("server_phone")
- private String serverPhone;
-
- @ApiModelProperty("服务备注")
- @TableField("reservation_remark")
- private String reservationRemark;
-
- @ApiModelProperty("订单成交价(服务回收价 + 津贴)")
- @TableField("order_money")
- private BigDecimal orderMoney;
-
- @ApiModelProperty("订单状态(0:待派单;1:待上门;2:待完工;3:已完结;4:已取消;5:已改派)")
- @TableField("state")
- private Integer state;
-
- @ApiModelProperty("接单时间(派单时间)")
- @TableField("accept_time")
- private Date acceptTime;
-
- @ApiModelProperty("师傅到达预约地点时间")
- @TableField("arrive_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
- private Date arriveTime;
-
- @ApiModelProperty("订单类型(0:正常订单,1:后台订单(后台订单与用户端、师傅端无联系))")
- @TableField("type")
- private Integer type;
-
- @ApiModelProperty("下单用户经度")
- @TableField("longitude")
- private Double longitude;
-
- @ApiModelProperty("下单用户纬度")
- @TableField("latitude")
- private Double latitude;
-
- @ApiModelProperty("订单完成时间")
- @TableField("complete_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:ss:mm")
- private Date completeTime;
-
- @ApiModelProperty("是否已提现(0:未提现,1:已提现)")
- @TableField("is_withdrawal")
- private Integer isWithdrawal;
-
- @ApiModelProperty("订单补贴金额")
- @TableField("subsidy")
- private BigDecimal subsidy;
-
- @ApiModelProperty("详细地址")
- @TableField("address")
- private String address;
-
- @ApiModelProperty("订单取消原因")
- @TableField("cancel_reason")
- private String cancelReason;
-
- @ApiModelProperty("置顶顺序")
- @TableField("top_sort")
- private Integer topSort;
-
- @ApiModelProperty("回收服务封面图")
- @TableField(exist = false)
- private String cover;
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/RecoveryServe.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/RecoveryServe.java
index 3c1bd2a..a04fc5c 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/RecoveryServe.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/RecoveryServe.java
@@ -43,7 +43,7 @@
@ApiModelProperty("预估价格")
@TableField("estimate_price")
- private BigDecimal estimatePrice;
+ private String estimatePrice;
@ApiModelProperty("默认回收价")
@TableField("default_price")
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/ServeCoordinate.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/ServeCoordinate.java
new file mode 100644
index 0000000..8745a62
--- /dev/null
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/ServeCoordinate.java
@@ -0,0 +1,36 @@
+package com.ruoyi.worker.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 师傅路线经纬度信息
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-07-08
+ */
+@Getter
+@Setter
+@ApiModel(value = "ServeCoordinate对象", description = "师傅路线经纬度信息")
+public class ServeCoordinate{
+
+ @ApiModelProperty("师傅id")
+ private Integer workerId;
+
+ @ApiModelProperty("订单id")
+ private String orderId;
+
+ @ApiModelProperty("路线经纬度")
+ private String coordinate;
+
+ @ApiModelProperty("经度")
+ private Double longitude;
+
+ @ApiModelProperty("纬度")
+ private Double latitude;
+
+}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/ServeRecord.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/ServeRecord.java
deleted file mode 100644
index 3ddb54f..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/ServeRecord.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.ruoyi.worker.entity;
-
-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.ruoyi.common.core.domain.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * <p>
- * 师傅服务记录
- * </p>
- *
- * @author hjl
- * @since 2024-06-06
- */
-@Getter
-@Setter
-@TableName("sys_serve_record")
-@ApiModel(value = "ServeRecord对象", description = "师傅服务记录")
-public class ServeRecord extends BaseEntity {
-
- @TableId(value = "id",type = IdType.AUTO)
- private Integer id;
-
- @ApiModelProperty("订单id")
- @TableField("order_id")
- private Integer orderId;
-
- @ApiModelProperty("现场照片(多张照片 ','隔开)")
- @TableField("photo")
- private String photo;
-
- @ApiModelProperty("服务备注")
- @TableField("remark")
- private String remark;
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/SysServeCoordinate.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/SysServeCoordinate.java
deleted file mode 100644
index 669210a..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/SysServeCoordinate.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.ruoyi.worker.entity;
-
-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.ruoyi.common.core.domain.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-
-/**
- * <p>
- * 师傅路线经纬度信息
- * </p>
- *
- * @author hjl
- * @since 2024-07-03
- */
-@Getter
-@Setter
-@TableName("sys_serve_coordinate")
-@ApiModel(value = "SysServeCoordinate对象", description = "师傅路线经纬度信息")
-public class SysServeCoordinate extends BaseEntity {
-
- @TableId(value = "id", type = IdType.AUTO)
- private Integer id;
-
- @ApiModelProperty("师傅id")
- @TableField("worker_id")
- private Integer workerId;
-
- @ApiModelProperty("订单id")
- @TableField("order_id")
- private Integer orderId;
-
- @ApiModelProperty("路线经纬度")
- @TableField("coordinate")
- private String coordinate;
-
- @ApiModelProperty("经度")
- @TableField("longitude")
- private BigDecimal longitude;
-
- @ApiModelProperty("纬度")
- @TableField("latitude")
- private BigDecimal latitude;
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/WorkerProcess.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/WorkerProcess.java
index 6d4b665..79e55f0 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/WorkerProcess.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/entity/WorkerProcess.java
@@ -88,6 +88,10 @@
@TableField("opinion")
private String opinion;
+ @ApiModelProperty("管辖城市二维数组")
+ @TableField("city_str")
+ private String cityStr;
+
@ApiModelProperty("手机验证码")
@TableField(exist = false)
private String code;
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/MasterWorkerMapper.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/MasterWorkerMapper.java
index a9ceef6..8a88de3 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/MasterWorkerMapper.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/MasterWorkerMapper.java
@@ -2,7 +2,6 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.worker.entity.MasterWorker;
-import com.ruoyi.worker.vo.OrderCountVO;
import org.apache.ibatis.annotations.Mapper;
/**
@@ -16,11 +15,4 @@
@Mapper
public interface MasterWorkerMapper extends BaseMapper<MasterWorker> {
- /**
- * 根据用户id统计总订单数、待上门订单数、已完结订单数
- *
- * @param id 用户id
- * @return 数量统计
- */
- OrderCountVO orderCount(Integer id);
}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/OrderMapper.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/OrderMapper.java
deleted file mode 100644
index e385488..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/OrderMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.ruoyi.worker.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.worker.entity.Order;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * <p>
- * 订单管理 Mapper 接口
- * </p>
- *
- * @author hjl
- * @since 2024-06-05
- */
-@Mapper
-public interface OrderMapper extends BaseMapper<Order> {
-
- /**
- * 订单列表
- *
- * @param userid 登录id
- * @param state 区分
- * @return 订单列表
- */
- List<Order> orderList(@Param("userId") Integer userid, @Param("state") Integer state);
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/ServeRecordMapper.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/ServeRecordMapper.java
deleted file mode 100644
index 0185bfc..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/ServeRecordMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.ruoyi.worker.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.worker.entity.ServeRecord;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * <p>
- * 师傅服务记录 Mapper 接口
- * </p>
- *
- * @author hjl
- * @since 2024-06-06
- */
-@Mapper
-public interface ServeRecordMapper extends BaseMapper<ServeRecord> {
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/SysServeCoordinateMapper.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/SysServeCoordinateMapper.java
deleted file mode 100644
index 8e728e0..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/mapper/SysServeCoordinateMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.ruoyi.worker.mapper;
-
-import com.ruoyi.worker.entity.SysServeCoordinate;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * <p>
- * 师傅路线经纬度信息 Mapper 接口
- * </p>
- *
- * @author hjl
- * @since 2024-07-03
- */
-@Mapper
-public interface SysServeCoordinateMapper extends BaseMapper<SysServeCoordinate> {
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/request/OrderSubmitRequest.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/request/OrderSubmitRequest.java
index 4685da0..29c18a8 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/request/OrderSubmitRequest.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/request/OrderSubmitRequest.java
@@ -14,7 +14,7 @@
public class OrderSubmitRequest {
@ApiModelProperty("订单id")
- private Integer orderId;
+ private String orderId;
@ApiModelProperty("现场照片")
private List<String> photo;
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/MasterWorkerService.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/MasterWorkerService.java
index 505a63a..b17190a 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/MasterWorkerService.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/MasterWorkerService.java
@@ -3,7 +3,6 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.worker.entity.MasterWorker;
-import com.ruoyi.worker.vo.OrderCountVO;
import com.ruoyi.worker.vo.OrderListVO;
import java.util.List;
@@ -19,14 +18,6 @@
public interface MasterWorkerService extends IService<MasterWorker> {
/**
- * 根据用户id统计总订单数、待上门订单数、已完结订单数
- *
- * @param id 用户id
- * @return 数量统计
- */
- OrderCountVO orderCount(Integer id);
-
- /**
* 获取订单代办列表,并根据师傅经纬度排序
*
* @param userid 师傅id
@@ -37,11 +28,12 @@
List<OrderListVO> orderNotHandle(Integer userid, String longitude, String latitude);
/**
- * 订单置顶
+ * 获取订单代办列表,并根据师傅经纬度排序
*
- * @param orderId 订单id
- * @param userid 用户id
- * @return 操作结果
+ * @param userid 师傅id
+ * @param longitude 经度
+ * @param latitude 纬度
+ * @return 代办列表
*/
- Boolean orderTop(Integer orderId, Integer userid);
+ List<OrderListVO> orderMapMode(Integer userid, String longitude, String latitude);
}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/OrderService.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/OrderService.java
deleted file mode 100644
index cbb3965..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/OrderService.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.ruoyi.worker.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.worker.entity.Order;
-
-import java.util.List;
-
-/**
- * <p>
- * 订单管理 服务类
- * </p>
- *
- * @author hjl
- * @since 2024-06-05
- */
-public interface OrderService extends IService<Order> {
-
- /**
- * 获取订单列表
- *
- * @param userid 登录师傅id
- * @param state 订单状态
- * @return 订单列表
- */
- List<Order> orderList(Integer userid, Integer state);
-
- /**
- * 到订单去,路线规划
- *
- * @param userPosition 用户下单经纬度信息
- * @param workerPosition 师傅所在经纬度信息
- * @return 路线规划
- */
- Object orderNavigation(String userPosition, String workerPosition);
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/ServeRecordService.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/ServeRecordService.java
deleted file mode 100644
index 092867f..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/ServeRecordService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.worker.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.worker.entity.ServeRecord;
-
-/**
- * <p>
- * 师傅服务记录 服务类
- * </p>
- *
- * @author hjl
- * @since 2024-06-06
- */
-public interface ServeRecordService extends IService<ServeRecord> {
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/SysServeCoordinateService.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/SysServeCoordinateService.java
deleted file mode 100644
index 00daf9a..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/SysServeCoordinateService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.worker.service;
-
-import com.ruoyi.worker.entity.SysServeCoordinate;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- * 师傅路线经纬度信息 服务类
- * </p>
- *
- * @author hjl
- * @since 2024-07-03
- */
-public interface SysServeCoordinateService extends IService<SysServeCoordinate> {
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/MasterWorkerServiceImpl.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/MasterWorkerServiceImpl.java
index 233c475..1278b27 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/MasterWorkerServiceImpl.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/MasterWorkerServiceImpl.java
@@ -1,18 +1,15 @@
package com.ruoyi.worker.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.utils.GaoDeMapUtil;
+import com.ruoyi.order.api.entity.Order;
+import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.worker.entity.MasterWorker;
-import com.ruoyi.worker.entity.Order;
import com.ruoyi.worker.entity.RecoveryServe;
import com.ruoyi.worker.mapper.MasterWorkerMapper;
import com.ruoyi.worker.service.MasterWorkerService;
-import com.ruoyi.worker.service.OrderService;
import com.ruoyi.worker.service.RecoveryServeService;
-import com.ruoyi.worker.vo.OrderCountVO;
import com.ruoyi.worker.vo.OrderListVO;
import com.ruoyi.worker.vo.OrderNotHandleVO;
import org.springframework.stereotype.Service;
@@ -35,24 +32,13 @@
public class MasterWorkerServiceImpl extends ServiceImpl<MasterWorkerMapper, MasterWorker> implements MasterWorkerService {
@Resource
- private OrderService orderService;
- @Resource
private RecoveryServeService recoveryServeService;
-
- @Override
- public OrderCountVO orderCount(Integer id) {
- return baseMapper.orderCount(id);
- }
+ @Resource
+ private OrderClient orderClient;
@Override
public List<OrderListVO> orderNotHandle(Integer userid, String longitude, String latitude) {
- QueryWrapper<Order> wrapper = new QueryWrapper<>();
- wrapper.eq("server_id", userid)
- .in("state", 1, 2)
- .eq("is_delete", Constants.ZERO)
- .orderByAsc("CASE WHEN topSort IS NULL THEN 1 ELSE 0 END")
- .orderByAsc("topSort");
- List<Order> orderList = orderService.list(wrapper);
+ List<Order> orderList = orderClient.orderNotHandle(userid).getData();
// 根据经纬度距离封装
List<OrderNotHandleVO> list = new ArrayList<>();
boolean item = false;
@@ -76,7 +62,7 @@
.eq(RecoveryServe::getId, order.getServeId())
.eq(RecoveryServe::getIsDelete, 0).one();
// vo类信息封装
- OrderListVO orderListVO = new OrderListVO(order.getServeId());
+ OrderListVO orderListVO = new OrderListVO();
orderListVO.setOrderId(order.getId());
orderListVO.setOrderNumber(order.getOrderNumber());
orderListVO.setSiteId(order.getSiteId());
@@ -124,28 +110,71 @@
}
return resultList;
}
-
}
@Override
- public Boolean orderTop(Integer orderId, Integer userid) {
- // 订单代办列表
- List<Order> orderList = orderService.lambdaQuery().eq(Order::getServerId, userid)
- .in(Order::getState, Constants.ONE, Constants.TWO)
- .eq(Order::getIsDelete, 0)
- .orderByAsc(Order::getTopSort).list();
- int itemSort = 2;
+ public List<OrderListVO> orderMapMode(Integer userid, String longitude, String latitude) {
+ List<Order> orderList = orderClient.orderNotHandle(userid).getData();
+ // 根据经纬度距离封装
+ List<OrderNotHandleVO> list = new ArrayList<>();
for (Order order : orderList) {
- if (null != order.getTopSort()) {
- order.setTopSort(itemSort);
- itemSort++;
+ // 用户下单经纬度
+ Double orderLongitude = order.getLongitude();
+ Double orderLatitude = order.getLatitude();
+ Integer topSort = order.getTopSort();
+ String orderPosition = orderLongitude + "," + orderLatitude;
+ // 根据经纬度计算与师傅的距离
+ Result<Long> result = GaoDeMapUtil.getDistance(orderPosition, longitude + "," + latitude);
+ Long distance = result.getDatas();
+ // 回收服务信息
+ RecoveryServe recoveryServe = recoveryServeService.lambdaQuery()
+ .eq(RecoveryServe::getId, order.getServeId())
+ .eq(RecoveryServe::getIsDelete, 0).one();
+ // vo类信息封装
+ OrderListVO orderListVO = new OrderListVO();
+ orderListVO.setOrderId(order.getId());
+ orderListVO.setOrderNumber(order.getOrderNumber());
+ orderListVO.setSiteId(order.getSiteId());
+ orderListVO.setSiteName(order.getSiteName());
+ orderListVO.setServeId(order.getServeId());
+ orderListVO.setServeName(order.getServeName());
+ if (null != recoveryServe) {
+ orderListVO.setServePicture(recoveryServe.getCover());
+ orderListVO.setServePrice(recoveryServe.getDefaultPrice());
+ }
+ orderListVO.setUserId(userid);
+ orderListVO.setReservationName(order.getReservationName());
+ orderListVO.setReservationPhone(order.getReservationPhone());
+ orderListVO.setReservationAddress(order.getReservationAddress());
+ orderListVO.setTime(order.getTime());
+ orderListVO.setServerId(order.getServerId());
+ orderListVO.setServerName(order.getServerName());
+ orderListVO.setServerPhone(order.getServerPhone());
+ orderListVO.setReservationRemark(order.getReservationRemark());
+ orderListVO.setOrderMoney(order.getOrderMoney());
+ orderListVO.setState(order.getState());
+ orderListVO.setAcceptTime(order.getAcceptTime());
+ orderListVO.setArriveTime(order.getArriveTime());
+ orderListVO.setType(order.getType());
+ orderListVO.setLongitude(order.getLongitude());
+ orderListVO.setLatitude(order.getLatitude());
+ orderListVO.setTopSort(topSort);
+ OrderNotHandleVO vo = new OrderNotHandleVO(distance, orderListVO);
+ list.add(vo);
+ }
+ // 根据距离排序
+ list.sort(Comparator.comparing(OrderNotHandleVO::getDistance));
+ List<OrderListVO> resultList = list.stream().map(OrderNotHandleVO::getOrderList).collect(Collectors.toList());
+ for (OrderListVO orderListVO : resultList) {
+ Integer serveId = orderListVO.getServeId();
+ // 回收服务信息
+ RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId)
+ .eq(RecoveryServe::getIsDelete, 0).one();
+ if (null != recoveryServe) {
+ orderListVO.setServePicture(recoveryServe.getCover());
}
}
- orderService.updateBatchById(orderList);
- return orderService.lambdaUpdate().set(Order::getTopSort, Constants.ONE)
- .eq(Order::getServerId, userid)
- .eq(Order::getId, orderId)
- .eq(Order::getIsDelete, 0).update();
+ return resultList;
}
}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/OrderServiceImpl.java
deleted file mode 100644
index f4e2dd7..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/OrderServiceImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.ruoyi.worker.service.impl;
-
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.core.constant.Constants;
-import com.ruoyi.common.core.utils.GaoDeMapUtil;
-import com.ruoyi.worker.entity.Order;
-import com.ruoyi.worker.mapper.OrderMapper;
-import com.ruoyi.worker.service.OrderService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * <p>
- * 订单管理 服务实现类
- * </p>
- *
- * @author hjl
- * @since 2024-06-05
- */
-@Service
-public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
-
- @Override
- public List<Order> orderList(Integer userid, Integer state) {
- LambdaQueryChainWrapper<Order> wrapper = lambdaQuery()
- .eq(Order::getIsDelete, 0);
- // 查询所有订单/待上门/已完结订单
- if (Constants.ONE.equals(state)) {
- wrapper.in(Order::getState, 1, 2);
- } else if (Constants.TWO.equals(state)) {
- wrapper.eq(Order::getState, 3);
- }
- List<Order> list = baseMapper.orderList(userid, state);
- return wrapper.eq(Order::getServerId, userid).list();
- }
-
- @Override
- public Object orderNavigation(String userPosition, String workerPosition) {
- return GaoDeMapUtil.routing(workerPosition, userPosition);
- }
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/ServeRecordServiceImpl.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/ServeRecordServiceImpl.java
deleted file mode 100644
index 5d23627..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/ServeRecordServiceImpl.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.worker.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.worker.entity.ServeRecord;
-import com.ruoyi.worker.mapper.ServeRecordMapper;
-import com.ruoyi.worker.service.ServeRecordService;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 师傅服务记录 服务实现类
- * </p>
- *
- * @author hjl
- * @since 2024-06-06
- */
-@Service
-public class ServeRecordServiceImpl extends ServiceImpl<ServeRecordMapper, ServeRecord> implements ServeRecordService {
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/SysServeCoordinateServiceImpl.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/SysServeCoordinateServiceImpl.java
deleted file mode 100644
index 0911a6b..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/SysServeCoordinateServiceImpl.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.worker.service.impl;
-
-import com.ruoyi.worker.entity.SysServeCoordinate;
-import com.ruoyi.worker.mapper.SysServeCoordinateMapper;
-import com.ruoyi.worker.service.SysServeCoordinateService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 师傅路线经纬度信息 服务实现类
- * </p>
- *
- * @author hjl
- * @since 2024-07-03
- */
-@Service
-public class SysServeCoordinateServiceImpl extends ServiceImpl<SysServeCoordinateMapper, SysServeCoordinate> implements SysServeCoordinateService {
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/utils/TencentCosUtil.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/utils/TencentCosUtil.java
new file mode 100644
index 0000000..0ad285d
--- /dev/null
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/utils/TencentCosUtil.java
@@ -0,0 +1,108 @@
+package com.ruoyi.worker.utils;
+
+import com.qcloud.cos.COSClient;
+import com.qcloud.cos.ClientConfig;
+import com.qcloud.cos.auth.BasicCOSCredentials;
+import com.qcloud.cos.auth.COSCredentials;
+import com.qcloud.cos.http.HttpProtocol;
+import com.qcloud.cos.model.ObjectMetadata;
+import com.qcloud.cos.model.PutObjectResult;
+import com.qcloud.cos.region.Region;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+import java.util.UUID;
+
+/**
+ * @author HJL
+ */
+@Component
+public class TencentCosUtil {
+
+ /**
+ * COS的SecretId
+ */
+ @Value("${cos.client.accessKey}")
+ private String secretId;
+ /**
+ * COS的SecretKey
+ */
+ @Value("${cos.client.secretKey}")
+ private String secretKey;
+ /**
+ * 文件上传后访问路径的根路径,后面要最佳文件名字与类型
+ */
+ @Value("${cos.client.rootSrc}")
+ private String rootSrc;
+ /**
+ * 上传的存储桶的地域
+ */
+ @Value("${cos.client.bucketAddr}")
+ private String bucketAddr;
+ /**
+ * 存储桶的名字,是自己在存储空间自己创建的,我创建的名字是:qq-test-1303******
+ */
+ @Value("${cos.client.bucket}")
+ private String bucketName;
+
+ /**
+ * 1.调用静态方法getCosClient()就会获得COSClient实例
+ * 2.本方法根据永久密钥初始化 COSClient的,官方是不推荐,官方推荐使用临时密钥,是可以限制密钥使用权限,创建cred时有些区别
+ *
+ * @return COSClient实例
+ */
+ private COSClient getCosClient() {
+ // 1 初始化用户身份信息(secretId, secretKey)。
+ COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
+ // 2.1 设置存储桶的地域(上文获得)
+ Region region = new Region(bucketAddr);
+ ClientConfig clientConfig = new ClientConfig(region);
+ // 2.2 使用https协议传输
+ clientConfig.setHttpProtocol(HttpProtocol.https);
+ // 生成 cos 客户端
+ return new COSClient(cred, clientConfig);
+ }
+
+ /**
+ * 只要调用静态方法upLoadFile(MultipartFile multipartFile)就可以获取上传后文件的全路径
+ *
+ * @param file
+ * @return 返回文件的浏览全路径
+ */
+ public String upLoadFile(MultipartFile file) {
+ try {
+ // 获取上传的文件的输入流
+ InputStream inputStream = file.getInputStream();
+ // 避免文件覆盖,获取文件的原始名称,如123.jpg,然后通过截取获得文件的后缀,也就是文件的类型
+ String originalFilename = file.getOriginalFilename();
+ //获取文件的类型
+ String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
+ //使用UUID工具 创建唯一名称,放置文件重名被覆盖,在拼接上上命令获取的文件类型
+ String fileName = UUID.randomUUID() + fileType;
+ // 指定文件上传到 COS 上的路径,即对象键。最终文件会传到存储桶名字中的images文件夹下的fileName名字
+ String key = "images/" + fileName;
+ // 创建上传Object的Metadata
+ ObjectMetadata objectMetadata = new ObjectMetadata();
+ // - 使用输入流存储,需要设置请求长度
+ objectMetadata.setContentLength(inputStream.available());
+ // - 设置缓存
+ objectMetadata.setCacheControl("no-cache");
+ // - 设置Content-Type
+ objectMetadata.setContentType(fileType);
+ //上传文件
+ PutObjectResult putResult = getCosClient().putObject(bucketName, key, inputStream, objectMetadata);
+ // 创建文件的网络访问路径
+ String url = rootSrc + key;
+ //关闭 cosClient,并释放 HTTP 连接的后台管理线程
+ getCosClient().shutdown();
+ return url;
+ } catch (Exception e) {
+ e.printStackTrace();
+ // 发生IO异常、COS连接异常等,返回空
+ return null;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/HomePageInfoVO.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/HomePageInfoVO.java
index c6dea9d..d14da12 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/HomePageInfoVO.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/HomePageInfoVO.java
@@ -1,5 +1,6 @@
package com.ruoyi.worker.vo;
+import com.ruoyi.order.api.entity.WorkerOrderCountVO;
import com.ruoyi.worker.entity.MasterWorker;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -16,12 +17,12 @@
private MasterWorker workerInfo;
@ApiModelProperty("订单统计")
- private OrderCountVO orderCountInfo;
+ private WorkerOrderCountVO orderCountInfo;
@ApiModelProperty("操作指导内容")
private String content;
- public HomePageInfoVO(MasterWorker workerInfo, OrderCountVO orderCountInfo, String content) {
+ public HomePageInfoVO(MasterWorker workerInfo, WorkerOrderCountVO orderCountInfo, String content) {
this.workerInfo = workerInfo;
this.orderCountInfo = orderCountInfo;
this.content = content;
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderCountVO.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderCountVO.java
deleted file mode 100644
index 64bb361..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderCountVO.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.ruoyi.worker.vo;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * @author HJL
- * @version 1.0
- * @since 2024-06-05 9:50
- */
-@Data
-public class OrderCountVO {
-
- @ApiModelProperty("总订单数")
- private Integer total;
-
- @ApiModelProperty("待上门订单数")
- private Integer waitVisit;
-
- @ApiModelProperty("已完结订单数")
- private Integer completed;
-
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderDetailVO.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderDetailVO.java
deleted file mode 100644
index d4d7ddd..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderDetailVO.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.ruoyi.worker.vo;
-
-import com.ruoyi.worker.entity.Evaluate;
-import com.ruoyi.worker.entity.Order;
-import com.ruoyi.worker.entity.ServeRecord;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * @author HJL
- * @version 1.0
- * @since 2024-06-06 14:16
- */
-@Data
-public class OrderDetailVO {
-
- @ApiModelProperty("订单信息")
- private Order orderInfo;
-
- @ApiModelProperty("服务信息")
- private ServeRecord serveInfo;
-
- @ApiModelProperty("评价信息")
- private Evaluate evaluateInfo;
-
- public OrderDetailVO(Order orderInfo, ServeRecord serveInfo, Evaluate evaluateInfo) {
- this.orderInfo = orderInfo;
- this.serveInfo = serveInfo;
- this.evaluateInfo = evaluateInfo;
- }
-}
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderListVO.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderListVO.java
index f51284a..68e21f2 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderListVO.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/vo/OrderListVO.java
@@ -16,8 +16,11 @@
@Data
public class OrderListVO {
+ @ApiModelProperty("字符串订单id")
+ private String orderIdStr;
+
@ApiModelProperty("订单id")
- private Integer orderId;
+ private String orderId;
@ApiModelProperty("订单编号")
private String orderNumber;
@@ -94,7 +97,7 @@
@TableField("top_sort")
private Integer topSort;
- public OrderListVO(Integer orderId) {
- this.orderId = orderId;
+ public String getOrderIdStr() {
+ return String.valueOf(getOrderId());
}
}
diff --git a/ruoyi-service/ruoyi-worker/src/main/resources/bootstrap.yaml b/ruoyi-service/ruoyi-worker/src/main/resources/bootstrap.yaml
index 07412bd..545476c 100644
--- a/ruoyi-service/ruoyi-worker/src/main/resources/bootstrap.yaml
+++ b/ruoyi-service/ruoyi-worker/src/main/resources/bootstrap.yaml
@@ -22,11 +22,17 @@
service: ${spring.application.name}
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
group: DEFAULT_GROUP
namespace: 5b0cc96f-d058-4986-a46f-64644ff8a467
+ # 线上nacos需要鉴权
+ username: nacos
+ password: jdhs_nacos!
name: ${spring.application.name}
# 配置文件格式
file-extension: yml
diff --git a/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/MasterWorkerMapper.xml b/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/MasterWorkerMapper.xml
index 6737672..6dd94af 100644
--- a/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/MasterWorkerMapper.xml
+++ b/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/MasterWorkerMapper.xml
@@ -25,12 +25,4 @@
<result column="is_delete" property="isDelete"/>
</resultMap>
- <select id="orderCount" resultType="com.ruoyi.worker.vo.OrderCountVO">
- SELECT COALESCE(SUM(CASE WHEN o.state IN (1, 2, 3) THEN 1 ELSE 0 END), 0) AS total,
- COALESCE(SUM(CASE WHEN o.state in (1, 2)THEN 1 ELSE 0 END), 0) AS waitVisit,
- COALESCE(SUM(CASE WHEN o.state = 3 THEN 1 ELSE 0 END), 0) AS completed
- FROM t_order o
- left join sys_master_worker m on o.server_id = m.id
- where m.id = #{id}
- </select>
</mapper>
diff --git a/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/OrderMapper.xml b/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/OrderMapper.xml
deleted file mode 100644
index 3c66843..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/OrderMapper.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.worker.mapper.OrderMapper">
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="com.ruoyi.worker.entity.Order">
- <id column="id" property="id"/>
- <result column="order_number" property="orderNumber"/>
- <result column="site_id" property="siteId"/>
- <result column="site_name" property="siteName"/>
- <result column="serve_id" property="serveId"/>
- <result column="serve_name" property="serveName"/>
- <result column="serve_price" property="servePrice"/>
- <result column="user_id" property="userId"/>
- <result column="reservation_name" property="reservationName"/>
- <result column="reservation_phone" property="reservationPhone"/>
- <result column="reservation_address" property="reservationAddress"/>
- <result column="time" property="time"/>
- <result column="server_id" property="serverId"/>
- <result column="server_name" property="serverName"/>
- <result column="server_phone" property="serverPhone"/>
- <result column="reservation_remark" property="reservationRemark"/>
- <result column="order_money" property="orderMoney"/>
- <result column="state" property="state"/>
- <result column="createBy" property="createBy"/>
- <result column="updateBy" property="updateBy"/>
- <result column="createTime" property="createTime"/>
- <result column="updateTime" property="updateTime"/>
- <result column="is_delete" property="isDelete"/>
- <result column="type" property="type"/>
- <result column="longitude" property="longitude"/>
- <result column="latitude" property="latitude"/>
- <result column="cover" property="cover"/>
- </resultMap>
-
- <select id="orderList" resultMap="BaseResultMap">
- select o.*, s.cover
- from t_order o
- left join sys_recovery_serve s on o.serve_id = s.id
- <where>
- o.is_delete = 0
- and s.is_delete = 0
- and o.server_id = #{userId}
- <if test="state == 1">
- and o.state in (1, 2)
- </if>
- <if test="state == 2">
- and o.state = 3
- </if>
- <choose>
- <when test="state == 1">
- and o.state in (1, 2)
- </when>
- <when test="state == 2">
- and o.state = 3
- </when>
- <otherwise>
- and o.state in (1, 2, 3)
- </otherwise>
- </choose>
- </where>
- </select>
-</mapper>
diff --git a/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/ServeRecordMapper.xml b/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/ServeRecordMapper.xml
deleted file mode 100644
index a67a36d..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/ServeRecordMapper.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.worker.mapper.ServeRecordMapper">
-
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="com.ruoyi.worker.entity.ServeRecord">
- <id column="id" property="id" />
- <result column="order_id" property="orderId" />
- <result column="photo" property="photo" />
- <result column="remark" property="remark" />
- <result column="createBy" property="createBy" />
- <result column="updateBy" property="updateBy" />
- <result column="createTime" property="createTime" />
- <result column="updateTime" property="updateTime" />
- <result column="is_delete" property="isDelete" />
- </resultMap>
-
-</mapper>
diff --git a/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/SysServeCoordinateMapper.xml b/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/SysServeCoordinateMapper.xml
deleted file mode 100644
index 21a321b..0000000
--- a/ruoyi-service/ruoyi-worker/src/main/resources/mapper/worker/SysServeCoordinateMapper.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.worker.mapper.SysServeCoordinateMapper">
-
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="com.ruoyi.worker.entity.SysServeCoordinate">
- <id column="id" property="id" />
- <result column="worker_id" property="workerId" />
- <result column="order_id" property="orderId" />
- <result column="coordinate" property="coordinate" />
- <result column="createBy" property="createBy" />
- <result column="updateBy" property="updateBy" />
- <result column="createTime" property="createTime" />
- <result column="updateTime" property="updateTime" />
- <result column="is_delete" property="isDelete" />
- </resultMap>
-
-</mapper>
--
Gitblit v1.7.1