From 893a441d6cb1e62024578586d8a46b2b4a239dd0 Mon Sep 17 00:00:00 2001 From: Wang Date: Tue, 30 Dec 2025 11:33:08 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=EF=BC=8C=E6=B4=BB=E5=8A=A8=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E5=91=98=E5=B7=A5=E5=85=B3=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E6=B4=BB=E5=8A=A8=E5=8F=82=E4=B8=8E=E8=80=85=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teach/mp/api/dto/AgentActivityDTO.java | 37 ++++ .../com/seer/teach/mp/api/dto/AgentDTO.java | 47 +++++ .../mp/api/dto/AgentEmployeeRelationDTO.java | 31 ++++ .../mp/entity/MpAgentActivityEntity.java | 55 ++++++ .../mp/entity/MpAgentActivityLogEntity.java | 60 +++++++ .../MpAgentActivityParticipantEntity.java | 41 +++++ .../entity/MpAgentEmployeeRelationEntity.java | 47 +++++ .../seer/teach/mp/entity/MpAgentEntity.java | 49 +++++ .../mp/mapper/MpAgentActivityLogMapper.java | 18 ++ .../mp/mapper/MpAgentActivityMapper.java | 18 ++ .../MpAgentActivityParticipantMapper.java | 18 ++ .../mapper/MpAgentEmployeeRelationMapper.java | 18 ++ .../seer/teach/mp/mapper/MpAgentMapper.java | 12 ++ .../AdminAgentActivityController.java | 60 +++++++ .../controller/AdminAgentController.java | 61 +++++++ .../AdminAgentEmployeeRelationController.java | 67 +++++++ .../AdminDealerApplicationsController.java | 8 +- .../AdminMessageGroupController.java | 29 ++- .../AdminMessageGroupUserController.java | 10 +- .../controller/AdminMpAccountController.java | 10 +- ...dminMpTemplateMessageConfigController.java | 10 +- .../AdminMpTemplateMessageController.java | 14 +- ...AdminTemplateMessageMappingController.java | 2 +- .../controller/req/AgentActivityQueryReq.java | 16 ++ .../controller/req/AgentActivityReq.java | 34 ++++ .../req/AgentEmployeeRelationQueryReq.java | 19 ++ .../req/AgentEmployeeRelationReq.java | 28 +++ .../admin/controller/req/AgentQueryReq.java | 28 +++ .../controller/req/MpAccountPageReq.java | 2 +- .../controller/req/MpAccountReq.java | 2 +- .../controller/req/MpDealerApplyQueryReq.java | 2 +- .../req/MpMessageGroupQueryReq.java | 2 +- .../controller/req/MpMessageGroupReq.java | 2 +- .../req/MpMessageGroupUpdateReq.java | 2 +- .../req/MpMessageGroupUserQueryReq.java | 2 +- .../controller/req/MpMessageGroupUserReq.java | 2 +- .../controller/req/MpSendMessageDTO.java | 2 +- .../MpTemplateMessageConfigPageQueryReq.java | 2 +- .../req/MpTemplateMessageConfigReq.java | 2 +- .../controller/req/MpTemplateMessageReq.java | 2 +- .../{ => admin}/controller/req/TenantReq.java | 2 +- .../controller/resp/AdminMpAccountResp.java | 2 +- .../controller/resp/AgentActivityResp.java | 37 ++++ .../resp/AgentEmployeeRelationResp.java | 31 ++++ .../mp/admin/controller/resp/AgentResp.java | 40 +++++ .../controller/resp/MpDealerApplyResp.java | 2 +- .../controller/resp/MpMessageGroupResp.java | 2 +- .../resp/MpMessageGroupUserResp.java | 2 +- .../resp/MpTemplateMessageConfigResp.java | 2 +- .../resp/MpTemplateMessageResp.java | 2 +- .../controller/resp/MpWxMpTemplateResp.java | 2 +- .../convert/AdminAgentActivityConvert.java | 24 +++ .../AdminAgentEmployeeRelationConvert.java | 24 +++ .../AdminDealerApplicationsConvert.java | 6 +- .../convert/AdminMpAccountConvert.java | 6 +- .../AdminMpTemplateMessageConfigConvert.java | 8 +- .../teach/mp/admin/convert/AgentConvert.java | 23 +++ .../convert/MpMessageGroupConvert.java | 10 +- .../convert/MpMessageGroupUserConvert.java | 8 +- .../convert/MpWxMpTemplateConvert.java | 6 +- .../mp/admin/service/AdminAgentService.java | 93 ++++++++++ .../AdminDealerApplicationsService.java | 9 +- .../service/AdminMpAccountService.java | 11 +- .../service/AdminTemplateMessageService.java | 7 +- .../service/IAdminAgentActivityService.java | 49 +++++ .../IAdminAgentEmployeeRelationService.java | 59 ++++++ .../impl/AdminAgentActivityServiceImpl.java | 59 ++++++ ...AdminAgentEmployeeRelationServiceImpl.java | 69 +++++++ .../mp/{ => admin}/utils/ClassFieldUtils.java | 2 +- .../AppAgentActivityController.java | 55 ++++++ ...AppAgentActivityParticipantController.java | 45 +++++ .../req/AppAgentActivityQueryReq.java | 16 ++ .../req/AppAgentEmployeeRelationQueryReq.java | 16 ++ .../resp/AgentActivityParticipantResp.java | 23 +++ .../controller/resp/AppAgentActivityResp.java | 34 ++++ .../resp/AppAgentEmployeeRelationResp.java | 32 ++++ .../app/convert/AppAgentActivityConvert.java | 24 +++ .../IAppAgentActivityParticipantService.java | 26 +++ .../app/service/IAppAgentActivityService.java | 35 ++++ ...ppAgentActivityParticipantServiceImpl.java | 68 +++++++ .../impl/AppAgentActivityServiceImpl.java | 56 ++++++ .../mp/api/impl/MpAgentServiceApiImpl.java | 36 ++++ .../teach/mp/cache/MpAgentActivityCache.java | 108 +++++++++++ .../exception/AgentActivityErrorCodeEnum.java | 25 +++ .../mp/exception/AgentActivityException.java | 24 +++ .../mp/exception/AgentErrorCodeEnum.java | 32 ++++ .../teach/mp/exception/AgentException.java | 26 +++ .../service/IMpAgentActivityLogService.java | 29 +++ .../IMpAgentActivityParticipantService.java | 44 +++++ .../mp/service/IMpAgentActivityService.java | 32 ++++ .../IMpAgentEmployeeRelationService.java | 58 ++++++ .../teach/mp/service/IMpAgentService.java | 58 ++++++ .../mp/service/IMqMessageGroupService.java | 6 +- .../impl/MpAgentActivityLogServiceImpl.java | 48 +++++ ...MpAgentActivityParticipantServiceImpl.java | 120 +++++++++++++ .../impl/MpAgentActivityServiceImpl.java | 166 +++++++++++++++++ .../MpAgentEmployeeRelationServiceImpl.java | 113 ++++++++++++ .../mp/service/impl/MpAgentServiceImpl.java | 168 ++++++++++++++++++ .../impl/MqMessageGroupServiceImpl.java | 13 +- 99 files changed, 2896 insertions(+), 108 deletions(-) create mode 100644 seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentActivityDTO.java create mode 100644 seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentDTO.java create mode 100644 seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentEmployeeRelationDTO.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityEntity.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityLogEntity.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityParticipantEntity.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentEmployeeRelationEntity.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentEntity.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityLogMapper.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityMapper.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityParticipantMapper.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentEmployeeRelationMapper.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentMapper.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityController.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentController.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentEmployeeRelationController.java rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/AdminDealerApplicationsController.java (90%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/AdminMessageGroupController.java (71%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/AdminMessageGroupUserController.java (90%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/AdminMpAccountController.java (90%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/AdminMpTemplateMessageConfigController.java (92%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/AdminMpTemplateMessageController.java (88%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/AdminTemplateMessageMappingController.java (97%) create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityQueryReq.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityReq.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentEmployeeRelationQueryReq.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentEmployeeRelationReq.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentQueryReq.java rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpAccountPageReq.java (81%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpAccountReq.java (93%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpDealerApplyQueryReq.java (86%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpMessageGroupQueryReq.java (86%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpMessageGroupReq.java (91%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpMessageGroupUpdateReq.java (88%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpMessageGroupUserQueryReq.java (89%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpMessageGroupUserReq.java (91%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpSendMessageDTO.java (89%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpTemplateMessageConfigPageQueryReq.java (75%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpTemplateMessageConfigReq.java (95%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/MpTemplateMessageReq.java (95%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/req/TenantReq.java (53%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/resp/AdminMpAccountResp.java (93%) create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentActivityResp.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentEmployeeRelationResp.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentResp.java rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/resp/MpDealerApplyResp.java (92%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/resp/MpMessageGroupResp.java (91%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/resp/MpMessageGroupUserResp.java (91%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/resp/MpTemplateMessageConfigResp.java (96%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/resp/MpTemplateMessageResp.java (96%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/controller/resp/MpWxMpTemplateResp.java (92%) create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentEmployeeRelationConvert.java rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/convert/AdminDealerApplicationsConvert.java (75%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/convert/AdminMpAccountConvert.java (75%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/convert/AdminMpTemplateMessageConfigConvert.java (74%) create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AgentConvert.java rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/convert/MpMessageGroupConvert.java (66%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/convert/MpMessageGroupUserConvert.java (70%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/convert/MpWxMpTemplateConvert.java (80%) create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminAgentService.java rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/service/AdminDealerApplicationsService.java (93%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/service/AdminMpAccountService.java (94%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/service/AdminTemplateMessageService.java (94%) create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityService.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentEmployeeRelationService.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityServiceImpl.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentEmployeeRelationServiceImpl.java rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/{ => admin}/utils/ClassFieldUtils.java (99%) create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppAgentActivityQueryReq.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppAgentEmployeeRelationQueryReq.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParticipantResp.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentActivityResp.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentEmployeeRelationResp.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParticipantService.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParticipantServiceImpl.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/api/impl/MpAgentServiceApiImpl.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityErrorCodeEnum.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityException.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentErrorCodeEnum.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentException.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityLogService.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityService.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentEmployeeRelationService.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentService.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityLogServiceImpl.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityServiceImpl.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentEmployeeRelationServiceImpl.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java diff --git a/seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentActivityDTO.java b/seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentActivityDTO.java new file mode 100644 index 0000000..484edad --- /dev/null +++ b/seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentActivityDTO.java @@ -0,0 +1,37 @@ +package com.seer.teach.mp.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(name = "AgentActivityDTO", description = "代理商活动DTO") +@Data +public class AgentActivityDTO { + + private Integer id; + + @Schema(description = "活动名称") + private String activityName; + + @Schema(description = "活动描述") + private String description; + + @Schema(description = "活动开始时间") + private LocalDateTime startTime; + + @Schema(description = "活动结束时间") + private LocalDateTime endTime; + + @Schema(description = "活动状态:0-禁用,1-启用") + private Integer status; + + @Schema(description = "创建人ID") + private Integer creatorId; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentDTO.java b/seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentDTO.java new file mode 100644 index 0000000..72dea7b --- /dev/null +++ b/seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentDTO.java @@ -0,0 +1,47 @@ +package com.seer.teach.mp.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 代理商DTO + */ +@Data +@Schema(name = "代理商DTO") +public class AgentDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(name = "代理商ID") + private Integer id; + + @Schema(name = "代理商名称") + private String agentName; + + @Schema(name = "代理商编码") + private String agentCode; + + @Schema(name = "代理商等级") + private String agentLevel; + + @Schema(name = "联系人姓名") + private String contactName; + + @Schema(name = "联系电话") + private String contactPhone; + + @Schema(name = "代理商地址") + private String address; + + @Schema(name = "代理商状态:0-禁用,1-启用") + private Integer status; + + @Schema(name = "创建时间") + private LocalDateTime createTime; + + @Schema(name = "更新时间") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentEmployeeRelationDTO.java b/seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentEmployeeRelationDTO.java new file mode 100644 index 0000000..f7797f4 --- /dev/null +++ b/seer-mp/seer-mp-api/src/main/java/com/seer/teach/mp/api/dto/AgentEmployeeRelationDTO.java @@ -0,0 +1,31 @@ +package com.seer.teach.mp.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(name = "AgentEmployeeRelationDTO", description = "代理商员工关联DTO") +@Data +public class AgentEmployeeRelationDTO { + + private Integer id; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "员工用户ID") + private Integer employeeUserId; + + @Schema(description = "员工职位") + private String position; + + @Schema(description = "员工状态:0-禁用,1-启用") + private Integer status; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityEntity.java new file mode 100644 index 0000000..0bb743b --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityEntity.java @@ -0,0 +1,55 @@ +package com.seer.teach.mp.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.seer.teach.common.entity.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +/** + *

+ * 代理商活动表 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Getter +@Setter +@TableName("mp_activities") +@Schema(name = "MpAgentActivityEntity对象", description = "活动表") +public class MpAgentActivityEntity extends BaseEntity { + + /** + * 活动名称,如千人助学计划 + */ + @TableField("activity_name") + private String activityName; + + /** + * 活动描述 + */ + @TableField("description") + private String description; + + /** + * 活动开始时间 + */ + @TableField("start_time") + private LocalDateTime startTime; + + /** + * 活动结束时间 + */ + @TableField("end_time") + private LocalDateTime endTime; + + /** + * 活动状态:0-禁用,1-启用 + */ + @TableField("status") + private Integer status; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityLogEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityLogEntity.java new file mode 100644 index 0000000..54ba400 --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityLogEntity.java @@ -0,0 +1,60 @@ +package com.seer.teach.mp.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.seer.teach.common.entity.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 代理商活动操作日志表 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Getter +@Setter +@TableName("mp_agent_activity_log") +@Schema(name = "MpAgentActivityLogEntity对象", description = "代理商活动操作日志表") +public class MpAgentActivityLogEntity extends BaseEntity { + + + /** + * 活动ID + */ + @TableField("activity_id") + private Integer activityId; + + /** + * 操作人ID + */ + @TableField("operator_id") + private Integer operatorId; + + /** + * 操作类型 + */ + @TableField("operation_type") + private String operationType; + + /** + * 操作描述 + */ + @TableField("description") + private String description; + + /** + * 操作前数据(JSON格式) + */ + @TableField("before_data") + private String beforeData; + + /** + * 操作后数据(JSON格式) + */ + @TableField("after_data") + private String afterData; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityParticipantEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityParticipantEntity.java new file mode 100644 index 0000000..a34abd7 --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityParticipantEntity.java @@ -0,0 +1,41 @@ +package com.seer.teach.mp.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.seer.teach.common.entity.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 代理商活动参与记录表 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Getter +@Setter +@TableName("mp_agent_activity_participants") +@Schema(name = "MpAgentActivityParticipantEntity对象", description = "代理商活动参与记录表") +public class MpAgentActivityParticipantEntity extends BaseEntity { + + /** + * 活动ID + */ + @TableField("activity_id") + private Integer activityId; + + /** + * 代理商ID(对应user表的ID) + */ + @TableField("agent_id") + private Integer agentId; + + /** + * 家长ID(对应user表的ID) + */ + @TableField("parent_id") + private Integer parentId; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentEmployeeRelationEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentEmployeeRelationEntity.java new file mode 100644 index 0000000..a11bd13 --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentEmployeeRelationEntity.java @@ -0,0 +1,47 @@ +package com.seer.teach.mp.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.seer.teach.common.entity.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 代理商员工关联表 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Getter +@Setter +@TableName("mp_agent_employee_relations") +@Schema(name = "MpAgentEmployeeRelationEntity对象", description = "代理商员工关联表") +public class MpAgentEmployeeRelationEntity extends BaseEntity { + + /** + * 代理商ID(对应user表的ID) + */ + @TableField("agent_id") + private Integer agentId; + + /** + * 员工用户ID(对应user表的ID) + */ + @TableField("employee_user_id") + private Integer employeeUserId; + + /** + * 员工职位 + */ + @TableField("position") + private String position; + + /** + * 员工状态:0-禁用,1-启用 + */ + @TableField("status") + private Integer status; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentEntity.java new file mode 100644 index 0000000..c24be88 --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentEntity.java @@ -0,0 +1,49 @@ +package com.seer.teach.mp.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.seer.teach.common.entity.BaseEntity; +import lombok.Data; + +/** + * 代理商实体类 + */ +@Data +@TableName("mp_agents") +public class MpAgentEntity extends BaseEntity { + + /** + * 代理商名称 + */ + private String agentName; + + /** + * 代理商编码 + */ + private String agentCode; + + /** + * 代理商等级 + */ + private String agentLevel; + + /** + * 联系人姓名 + */ + private String contactName; + + /** + * 联系电话 + */ + private String contactPhone; + + /** + * 代理商地址 + */ + private String address; + + /** + * 代理商状态:0-禁用,1-启用 + */ + private Integer status; + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityLogMapper.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityLogMapper.java new file mode 100644 index 0000000..d34107f --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityLogMapper.java @@ -0,0 +1,18 @@ +package com.seer.teach.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.seer.teach.mp.entity.MpAgentActivityLogEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 代理商活动操作日志表 Mapper 接口 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Mapper +public interface MpAgentActivityLogMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityMapper.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityMapper.java new file mode 100644 index 0000000..db2e6a0 --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityMapper.java @@ -0,0 +1,18 @@ +package com.seer.teach.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.seer.teach.mp.entity.MpAgentActivityEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 代理商活动表 Mapper 接口 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Mapper +public interface MpAgentActivityMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityParticipantMapper.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityParticipantMapper.java new file mode 100644 index 0000000..e3f82b6 --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityParticipantMapper.java @@ -0,0 +1,18 @@ +package com.seer.teach.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 代理商活动参与记录表 Mapper 接口 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Mapper +public interface MpAgentActivityParticipantMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentEmployeeRelationMapper.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentEmployeeRelationMapper.java new file mode 100644 index 0000000..94a5442 --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentEmployeeRelationMapper.java @@ -0,0 +1,18 @@ +package com.seer.teach.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.seer.teach.mp.entity.MpAgentEmployeeRelationEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 代理商员工关联表 Mapper 接口 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Mapper +public interface MpAgentEmployeeRelationMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentMapper.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentMapper.java new file mode 100644 index 0000000..c8864fe --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentMapper.java @@ -0,0 +1,12 @@ +package com.seer.teach.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.seer.teach.mp.entity.MpAgentEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 代理商Mapper接口 + */ +@Mapper +public interface MpAgentMapper extends BaseMapper { +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityController.java new file mode 100644 index 0000000..6ca703a --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityController.java @@ -0,0 +1,60 @@ +package com.seer.teach.mp.admin.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.annotation.LogPrint; +import com.seer.teach.mp.admin.controller.req.AgentActivityQueryReq; +import com.seer.teach.mp.admin.controller.req.AgentActivityReq; +import com.seer.teach.mp.admin.controller.resp.AgentActivityResp; +import com.seer.teach.mp.admin.service.IAdminAgentActivityService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@LogPrint +@RequiredArgsConstructor +@RestController +@Tag(name = "管理端 - 代理商活动") +@RequestMapping("/mp/agent/activity") +public class AdminAgentActivityController { + + private final IAdminAgentActivityService agentActivityService; + + @Operation(summary = "代理商活动列表") + @GetMapping("/page-list") + @SaCheckPermission("mp:admin:agent:activity:list") + public ResultBean> pageList(AgentActivityQueryReq query) { + return ResultBean.success(agentActivityService.pageList(query)); + } + + @Operation(summary = "创建或更新代理商活动") + @PostMapping("/save") + @SaCheckPermission("mp:admin:agent:activity:save") + public ResultBean save(@Valid @RequestBody AgentActivityReq request) { + return ResultBean.success(agentActivityService.saveOrUpdateActivity(request)); + } + + @Operation(summary = "删除代理商活动") + @DeleteMapping("/{id}") + @SaCheckPermission("mp:admin:agent:activity:delete") + public ResultBean delete(@PathVariable Integer id) { + return ResultBean.success(agentActivityService.deleteActivity(id)); + } + + @Operation(summary = "详情") + @GetMapping("/{id}") + @SaCheckPermission("mp:admin:agent:activity:get") + public ResultBean get(@PathVariable Integer id) { + AgentActivityResp result = agentActivityService.getById(id); + return ResultBean.success(result); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentController.java new file mode 100644 index 0000000..f800081 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentController.java @@ -0,0 +1,61 @@ +package com.seer.teach.mp.admin.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.annotation.LogPrint; +import com.seer.teach.mp.admin.controller.req.AgentQueryReq; +import com.seer.teach.mp.admin.controller.resp.AgentResp; +import com.seer.teach.mp.admin.service.AdminAgentService; +import com.seer.teach.mp.entity.MpAgentEntity; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@LogPrint +@RequiredArgsConstructor +@RestController +@Tag(name = "管理端 - 代理商") +@RequestMapping("/mp/agent") +public class AdminAgentController { + + private final AdminAgentService adminAgentService; + + @Operation(summary = "代理商列表") + @GetMapping("/page-list") + @SaCheckPermission("mp:admin:agent:list") + public ResultBean> pageList(AgentQueryReq query) { + return ResultBean.success(adminAgentService.pageList(query)); + } + + @Operation(summary = "详情") + @GetMapping("/{id}") + @SaCheckPermission("mp:admin:agent:get") + public ResultBean getAgent(@PathVariable Integer id) { + return ResultBean.success(adminAgentService.getAgentById(id)); + } + + @Operation(summary = "新增") + @PostMapping + @SaCheckPermission("mp:admin:agent:save") + public ResultBean save(@RequestBody MpAgentEntity agentEntity) { + return ResultBean.success(adminAgentService.saveAgent(agentEntity)); + } + + @Operation(summary = "更新") + @PutMapping + @SaCheckPermission("mp:admin:agent:update") + public ResultBean update(@RequestBody MpAgentEntity agentEntity) { + return ResultBean.success(adminAgentService.updateAgent(agentEntity)); + } + + @Operation(summary = "删除") + @DeleteMapping + @SaCheckPermission("mp:admin:agent:delete") + public ResultBean delete(@RequestBody List ids) { + return ResultBean.success(adminAgentService.deleteById(ids)); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentEmployeeRelationController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentEmployeeRelationController.java new file mode 100644 index 0000000..b0d0295 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentEmployeeRelationController.java @@ -0,0 +1,67 @@ +package com.seer.teach.mp.admin.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.annotation.LogPrint; +import com.seer.teach.mp.admin.controller.req.AgentEmployeeRelationQueryReq; +import com.seer.teach.mp.admin.controller.req.AgentEmployeeRelationReq; +import com.seer.teach.mp.admin.controller.resp.AgentEmployeeRelationResp; +import com.seer.teach.mp.admin.service.IAdminAgentEmployeeRelationService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@LogPrint +@RequiredArgsConstructor +@RestController +@Tag(name = "管理端 - 代理商员工") +@RequestMapping("/mp/agent/employee") +public class AdminAgentEmployeeRelationController { + + private final IAdminAgentEmployeeRelationService agentEmployeeRelationService; + + @Operation(summary = "代理商员工关联列表") + @GetMapping("/page-list") + @SaCheckPermission("mp:admin:agent:employee:list") + public ResultBean> pageList(AgentEmployeeRelationQueryReq query) { + return ResultBean.success(agentEmployeeRelationService.pageList(query)); + } + + @Operation(summary = "创建或更新代理商员工关联") + @PostMapping("/save") + @SaCheckPermission("mp:admin:agent:employee:save") + public ResultBean save(@Valid @RequestBody AgentEmployeeRelationReq request) { + return ResultBean.success(agentEmployeeRelationService.saveOrUpdateRelation(request)); + } + + @Operation(summary = "删除代理商员工关联") + @DeleteMapping("/{id}") + @SaCheckPermission("mp:admin:agent:employee:delete") + public ResultBean delete(@PathVariable Integer id) { + return ResultBean.success(agentEmployeeRelationService.deleteRelation(id)); + } + + @Operation(summary = "详情") + @GetMapping("/{id}") + @SaCheckPermission("mp:admin:agent:employee:get") + public ResultBean get(@PathVariable Integer id) { + AgentEmployeeRelationResp result = agentEmployeeRelationService.getById(id); + return ResultBean.success(result); + } + + @Operation(summary = "根据代理商ID获取员工列表") + @GetMapping("/by-agent/{agentId}") + @SaCheckPermission("mp:admin:agent:employee:by-agent") + public ResultBean> getByAgent(@PathVariable Integer agentId) { + return ResultBean.success(agentEmployeeRelationService.getEmployeeRelationsByAgentId(agentId)); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminDealerApplicationsController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminDealerApplicationsController.java similarity index 90% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminDealerApplicationsController.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminDealerApplicationsController.java index 9e7beee..dee72f7 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminDealerApplicationsController.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminDealerApplicationsController.java @@ -1,13 +1,13 @@ -package com.seer.teach.mp.controller; +package com.seer.teach.mp.admin.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import com.seer.teach.common.PageListBean; import com.seer.teach.common.ResultBean; import com.seer.teach.common.annotation.LogPrint; -import com.seer.teach.mp.controller.req.MpDealerApplyQueryReq; -import com.seer.teach.mp.controller.resp.MpDealerApplyResp; +import com.seer.teach.mp.admin.controller.req.MpDealerApplyQueryReq; +import com.seer.teach.mp.admin.controller.resp.MpDealerApplyResp; import com.seer.teach.mp.request.DealerApplyReq; -import com.seer.teach.mp.service.AdminDealerApplicationsService; +import com.seer.teach.mp.admin.service.AdminDealerApplicationsService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMessageGroupController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMessageGroupController.java similarity index 71% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMessageGroupController.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMessageGroupController.java index c8fe3ec..5598c2e 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMessageGroupController.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMessageGroupController.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller; +package com.seer.teach.mp.admin.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -6,11 +6,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.seer.teach.common.PageListBean; import com.seer.teach.common.ResultBean; import com.seer.teach.common.utils.PageConverterUtils; -import com.seer.teach.mp.controller.req.MpMessageGroupReq; -import com.seer.teach.mp.controller.req.MpMessageGroupQueryReq; -import com.seer.teach.mp.controller.req.MpMessageGroupUpdateReq; -import com.seer.teach.mp.controller.resp.MpMessageGroupResp; -import com.seer.teach.mp.convert.MpMessageGroupConvert; +import com.seer.teach.mp.admin.controller.req.MpMessageGroupReq; +import com.seer.teach.mp.admin.controller.req.MpMessageGroupQueryReq; +import com.seer.teach.mp.admin.controller.req.MpMessageGroupUpdateReq; +import com.seer.teach.mp.admin.controller.resp.MpMessageGroupResp; +import com.seer.teach.mp.admin.convert.MpMessageGroupConvert; import com.seer.teach.mp.entity.MpMessageGroupEntity; import com.seer.teach.mp.service.IMqMessageGroupService; import io.swagger.v3.oas.annotations.tags.Tag; @@ -33,9 +33,8 @@ public class AdminMessageGroupController { @PostMapping @Operation(summary = "创建消息组") @SaCheckPermission("admin:mp:message-group:create") - public ResultBean create(@RequestBody @Validated MpMessageGroupReq params) { - mqMessageGroupService.crateMesGroup(MpMessageGroupConvert.INSTANCE.convertOne(params)); - return ResultBean.success() ; + public ResultBean create(@RequestBody @Validated MpMessageGroupReq params) { + return ResultBean.success(mqMessageGroupService.crateMesGroup(MpMessageGroupConvert.INSTANCE.convertOne(params))) ; } /** @@ -59,7 +58,7 @@ public class AdminMessageGroupController { Page pageParam = new Page<>(params.getPageNo(), params.getPageSize()); MpMessageGroupEntity queryParam = MpMessageGroupConvert.INSTANCE.convertQueryOne(params); IPage pageList = mqMessageGroupService.pageList(pageParam, queryParam); - PageListBean resultBean = PageConverterUtils.convertPageListBean(pageList, MpMessageGroupConvert.INSTANCE::convertRespList); + PageListBean resultBean = PageConverterUtils.convertPageListBean(pageList, MpMessageGroupConvert.INSTANCE::convertRespList); return ResultBean.success(resultBean); } @@ -69,11 +68,10 @@ public class AdminMessageGroupController { @PostMapping("/{id}") @Operation(summary = "更新消息组") @SaCheckPermission("admin:mp:message-group:update") - public ResultBean update(@RequestBody @Validated MpMessageGroupUpdateReq params, + public ResultBean update(@RequestBody @Validated MpMessageGroupUpdateReq params, @PathVariable Integer id) { MpMessageGroupEntity entity = MpMessageGroupConvert.INSTANCE.convertUpdateOne( params); - mqMessageGroupService.updateMesGroup(entity, id); - return ResultBean.success(); + return ResultBean.success(mqMessageGroupService.updateMesGroup(entity, id)); } /** @@ -82,8 +80,7 @@ public class AdminMessageGroupController { @DeleteMapping("/{id}") @Operation(summary = "根据ID删除消息组") @SaCheckPermission("admin:mp:message-group:delete") - public ResultBean delete(@PathVariable Integer id) { - mqMessageGroupService.deleteById(id); - return ResultBean.success(); + public ResultBean delete(@PathVariable Integer id) { + return ResultBean.success(mqMessageGroupService.deleteById(id)); } } diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMessageGroupUserController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMessageGroupUserController.java similarity index 90% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMessageGroupUserController.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMessageGroupUserController.java index 1fb1ff6..048dcd2 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMessageGroupUserController.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMessageGroupUserController.java @@ -1,14 +1,14 @@ -package com.seer.teach.mp.controller; +package com.seer.teach.mp.admin.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.seer.teach.common.PageListBean; import com.seer.teach.common.ResultBean; import com.seer.teach.common.utils.PageConverterUtils; -import com.seer.teach.mp.controller.req.MpMessageGroupUserReq; -import com.seer.teach.mp.controller.req.MpMessageGroupUserQueryReq; -import com.seer.teach.mp.controller.resp.MpMessageGroupUserResp; -import com.seer.teach.mp.convert.MpMessageGroupUserConvert; +import com.seer.teach.mp.admin.controller.req.MpMessageGroupUserReq; +import com.seer.teach.mp.admin.controller.req.MpMessageGroupUserQueryReq; +import com.seer.teach.mp.admin.controller.resp.MpMessageGroupUserResp; +import com.seer.teach.mp.admin.convert.MpMessageGroupUserConvert; import com.seer.teach.mp.entity.MpMessageGroupUserEntity; import com.seer.teach.mp.service.IMqMessageGroupUserService; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMpAccountController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMpAccountController.java similarity index 90% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMpAccountController.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMpAccountController.java index bf88835..6ca8c03 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMpAccountController.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMpAccountController.java @@ -1,12 +1,12 @@ -package com.seer.teach.mp.controller; +package com.seer.teach.mp.admin.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import com.seer.teach.common.PageListBean; import com.seer.teach.common.ResultBean; -import com.seer.teach.mp.controller.req.MpAccountPageReq; -import com.seer.teach.mp.controller.req.MpAccountReq; -import com.seer.teach.mp.controller.resp.AdminMpAccountResp; -import com.seer.teach.mp.service.AdminMpAccountService; +import com.seer.teach.mp.admin.controller.req.MpAccountPageReq; +import com.seer.teach.mp.admin.controller.req.MpAccountReq; +import com.seer.teach.mp.admin.controller.resp.AdminMpAccountResp; +import com.seer.teach.mp.admin.service.AdminMpAccountService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMpTemplateMessageConfigController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMpTemplateMessageConfigController.java similarity index 92% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMpTemplateMessageConfigController.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMpTemplateMessageConfigController.java index 30397f0..7ac5fed 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMpTemplateMessageConfigController.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMpTemplateMessageConfigController.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller; +package com.seer.teach.mp.admin.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -8,10 +8,10 @@ import com.seer.teach.common.ResultBean; import com.seer.teach.common.enums.ResultCodeEnum; import com.seer.teach.common.utils.AssertUtils; import com.seer.teach.common.utils.PageConverterUtils; -import com.seer.teach.mp.controller.req.MpTemplateMessageConfigPageQueryReq; -import com.seer.teach.mp.controller.req.MpTemplateMessageConfigReq; -import com.seer.teach.mp.controller.resp.MpTemplateMessageConfigResp; -import com.seer.teach.mp.convert.AdminMpTemplateMessageConfigConvert; +import com.seer.teach.mp.admin.controller.req.MpTemplateMessageConfigPageQueryReq; +import com.seer.teach.mp.admin.controller.req.MpTemplateMessageConfigReq; +import com.seer.teach.mp.admin.controller.resp.MpTemplateMessageConfigResp; +import com.seer.teach.mp.admin.convert.AdminMpTemplateMessageConfigConvert; import com.seer.teach.mp.entity.MpTemplateMessageConfigEntity; import com.seer.teach.mp.service.IMpTemplateMessageConfigService; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMpTemplateMessageController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMpTemplateMessageController.java similarity index 88% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMpTemplateMessageController.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMpTemplateMessageController.java index d0aa9f7..bc9cc82 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminMpTemplateMessageController.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminMpTemplateMessageController.java @@ -1,15 +1,15 @@ -package com.seer.teach.mp.controller; +package com.seer.teach.mp.admin.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.stp.StpUtil; import com.seer.teach.common.ResultBean; -import com.seer.teach.mp.controller.req.MpTemplateMessageReq; -import com.seer.teach.mp.controller.resp.MpTemplateMessageResp; -import com.seer.teach.mp.controller.resp.MpWxMpTemplateResp; -import com.seer.teach.mp.convert.MpWxMpTemplateConvert; +import com.seer.teach.mp.admin.controller.req.MpTemplateMessageReq; +import com.seer.teach.mp.admin.controller.resp.MpTemplateMessageResp; +import com.seer.teach.mp.admin.controller.resp.MpWxMpTemplateResp; +import com.seer.teach.mp.admin.convert.MpWxMpTemplateConvert; import com.seer.teach.mp.entity.MpTemplateMessageEntity; -import com.seer.teach.mp.service.AdminTemplateMessageService; -import com.seer.teach.mp.utils.ClassFieldUtils; +import com.seer.teach.mp.admin.service.AdminTemplateMessageService; +import com.seer.teach.mp.admin.utils.ClassFieldUtils; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.Operation; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminTemplateMessageMappingController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminTemplateMessageMappingController.java similarity index 97% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminTemplateMessageMappingController.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminTemplateMessageMappingController.java index 3b5b7a1..6706eeb 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/AdminTemplateMessageMappingController.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminTemplateMessageMappingController.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller; +package com.seer.teach.mp.admin.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityQueryReq.java new file mode 100644 index 0000000..21b3bd2 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityQueryReq.java @@ -0,0 +1,16 @@ +package com.seer.teach.mp.admin.controller.req; + +import com.seer.teach.common.request.PageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(name = "AgentActivityQueryReq", description = "代理商活动查询请求参数") +@Data +public class AgentActivityQueryReq extends PageRequest { + + @Schema(description = "活动名称") + private String activityName; + + @Schema(description = "活动状态:0-禁用,1-启用") + private Integer status; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityReq.java new file mode 100644 index 0000000..646bb7d --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityReq.java @@ -0,0 +1,34 @@ +package com.seer.teach.mp.admin.controller.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.time.LocalDateTime; + +@Schema(name = "AgentActivityReq", description = "代理商活动请求参数") +@Data +public class AgentActivityReq { + + @Schema(description = "活动ID") + private Integer id; + + @NotBlank(message = "活动名称不能为空") + @Schema(description = "活动名称") + private String activityName; + + @Schema(description = "活动描述") + private String description; + + @NotNull(message = "活动开始时间不能为空") + @Schema(description = "活动开始时间") + private LocalDateTime startTime; + + @NotNull(message = "活动结束时间不能为空") + @Schema(description = "活动结束时间") + private LocalDateTime endTime; + + @Schema(description = "活动状态:0-禁用,1-启用") + private Integer status = 1; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentEmployeeRelationQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentEmployeeRelationQueryReq.java new file mode 100644 index 0000000..dd9a301 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentEmployeeRelationQueryReq.java @@ -0,0 +1,19 @@ +package com.seer.teach.mp.admin.controller.req; + +import com.seer.teach.common.request.PageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(name = "AgentEmployeeRelationQueryReq", description = "代理商员工关联查询请求参数") +@Data +public class AgentEmployeeRelationQueryReq extends PageRequest { + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "员工用户ID") + private Integer employeeUserId; + + @Schema(description = "员工状态:0-禁用,1-启用") + private Integer status; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentEmployeeRelationReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentEmployeeRelationReq.java new file mode 100644 index 0000000..230bc4f --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentEmployeeRelationReq.java @@ -0,0 +1,28 @@ +package com.seer.teach.mp.admin.controller.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import jakarta.validation.constraints.NotNull; + +@Schema(name = "AgentEmployeeRelationReq", description = "代理商员工关联请求参数") +@Data +public class AgentEmployeeRelationReq { + + @Schema(description = "关联ID") + private Integer id; + + @NotNull(message = "代理商ID不能为空") + @Schema(description = "代理商ID") + private Integer agentId; + + @NotNull(message = "员工用户ID不能为空") + @Schema(description = "员工用户ID") + private Integer employeeUserId; + + @Schema(description = "员工职位") + private String position; + + @Schema(description = "员工状态:0-禁用,1-启用") + private Integer status = 1; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentQueryReq.java new file mode 100644 index 0000000..aa3f95f --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentQueryReq.java @@ -0,0 +1,28 @@ +package com.seer.teach.mp.admin.controller.req; + +import com.seer.teach.common.request.PageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "代理商查询参数") +@Data +public class AgentQueryReq extends PageRequest { + + @Schema(description = "代理商名称") + private String agentName; + + @Schema(description = "代理商编码") + private String agentCode; + + @Schema(description = "代理商等级") + private String agentLevel; + + @Schema(description = "联系人姓名") + private String contactName; + + @Schema(description = "联系电话") + private String contactPhone; + + @Schema(description = "代理商状态:0-禁用,1-启用") + private Integer status; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpAccountPageReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpAccountPageReq.java similarity index 81% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpAccountPageReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpAccountPageReq.java index 38fd3c7..36a96b4 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpAccountPageReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpAccountPageReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import com.seer.teach.common.request.PageRequest; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpAccountReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpAccountReq.java similarity index 93% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpAccountReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpAccountReq.java index a44d3d8..8d11dd7 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpAccountReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpAccountReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import lombok.Data; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpDealerApplyQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpDealerApplyQueryReq.java similarity index 86% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpDealerApplyQueryReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpDealerApplyQueryReq.java index 5a9d9b5..7331372 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpDealerApplyQueryReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpDealerApplyQueryReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import com.seer.teach.common.request.PageRequest; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupQueryReq.java similarity index 86% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupQueryReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupQueryReq.java index 14d4238..5173e39 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupQueryReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupQueryReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import com.seer.teach.common.request.PageRequest; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupReq.java similarity index 91% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupReq.java index 9304e8c..400f001 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupUpdateReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupUpdateReq.java similarity index 88% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupUpdateReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupUpdateReq.java index 23bdd8c..39a74db 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupUpdateReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupUpdateReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupUserQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupUserQueryReq.java similarity index 89% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupUserQueryReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupUserQueryReq.java index 5ff2c89..191bed2 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupUserQueryReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupUserQueryReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import com.seer.teach.common.request.PageRequest; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupUserReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupUserReq.java similarity index 91% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupUserReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupUserReq.java index 7cf543d..5da8c88 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpMessageGroupUserReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpMessageGroupUserReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpSendMessageDTO.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpSendMessageDTO.java similarity index 89% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpSendMessageDTO.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpSendMessageDTO.java index 2c64e23..3d60ce7 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpSendMessageDTO.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpSendMessageDTO.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.api.dto; +package com.seer.teach.mp.admin.controller.req; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpTemplateMessageConfigPageQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpTemplateMessageConfigPageQueryReq.java similarity index 75% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpTemplateMessageConfigPageQueryReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpTemplateMessageConfigPageQueryReq.java index c5fae16..943b2f9 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpTemplateMessageConfigPageQueryReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpTemplateMessageConfigPageQueryReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import com.seer.teach.common.request.PageRequest; import lombok.Data; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpTemplateMessageConfigReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpTemplateMessageConfigReq.java similarity index 95% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpTemplateMessageConfigReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpTemplateMessageConfigReq.java index dad9eeb..aae28fe 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpTemplateMessageConfigReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpTemplateMessageConfigReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpTemplateMessageReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpTemplateMessageReq.java similarity index 95% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpTemplateMessageReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpTemplateMessageReq.java index ec7e7db..1e57ef8 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/MpTemplateMessageReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpTemplateMessageReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/TenantReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/TenantReq.java similarity index 53% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/TenantReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/TenantReq.java index b101bbb..c8a0491 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/req/TenantReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/TenantReq.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.req; +package com.seer.teach.mp.admin.controller.req; import lombok.Data; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/AdminMpAccountResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminMpAccountResp.java similarity index 93% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/AdminMpAccountResp.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminMpAccountResp.java index c2bbb94..778c29c 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/AdminMpAccountResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminMpAccountResp.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.resp; +package com.seer.teach.mp.admin.controller.resp; import lombok.Data; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentActivityResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentActivityResp.java new file mode 100644 index 0000000..a452d7f --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentActivityResp.java @@ -0,0 +1,37 @@ +package com.seer.teach.mp.admin.controller.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(name = "AgentActivityResp", description = "代理商活动响应参数") +@Data +public class AgentActivityResp { + + private Integer id; + + @Schema(description = "活动名称") + private String activityName; + + @Schema(description = "活动描述") + private String description; + + @Schema(description = "活动开始时间") + private LocalDateTime startTime; + + @Schema(description = "活动结束时间") + private LocalDateTime endTime; + + @Schema(description = "活动状态:0-禁用,1-启用") + private Integer status; + + @Schema(description = "创建人ID") + private Integer creatorId; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentEmployeeRelationResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentEmployeeRelationResp.java new file mode 100644 index 0000000..99e19c0 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentEmployeeRelationResp.java @@ -0,0 +1,31 @@ +package com.seer.teach.mp.admin.controller.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(name = "AgentEmployeeRelationResp", description = "代理商员工关联响应参数") +@Data +public class AgentEmployeeRelationResp { + + private Integer id; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "员工用户ID") + private Integer employeeUserId; + + @Schema(description = "员工职位") + private String position; + + @Schema(description = "员工状态:0-禁用,1-启用") + private Integer status; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentResp.java new file mode 100644 index 0000000..1e85a8b --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentResp.java @@ -0,0 +1,40 @@ +package com.seer.teach.mp.admin.controller.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(name = "AgentResp", description = "代理商Response") +@Data +public class AgentResp { + + private Integer id; + + @Schema(description = "代理商名称") + private String agentName; + + @Schema(description = "代理商编码") + private String agentCode; + + @Schema(description = "代理商等级") + private String agentLevel; + + @Schema(description = "联系人姓名") + private String contactName; + + @Schema(description = "联系电话") + private String contactPhone; + + @Schema(description = "代理商地址") + private String address; + + @Schema(description = "代理商状态:0-禁用,1-启用") + private Integer status; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpDealerApplyResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpDealerApplyResp.java similarity index 92% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpDealerApplyResp.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpDealerApplyResp.java index 43571a7..1f3ab0c 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpDealerApplyResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpDealerApplyResp.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.resp; +package com.seer.teach.mp.admin.controller.resp; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpMessageGroupResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpMessageGroupResp.java similarity index 91% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpMessageGroupResp.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpMessageGroupResp.java index 1eb2b9e..50ed475 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpMessageGroupResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpMessageGroupResp.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.resp; +package com.seer.teach.mp.admin.controller.resp; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpMessageGroupUserResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpMessageGroupUserResp.java similarity index 91% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpMessageGroupUserResp.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpMessageGroupUserResp.java index 98e3221..0ced2ae 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpMessageGroupUserResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpMessageGroupUserResp.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.resp; +package com.seer.teach.mp.admin.controller.resp; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpTemplateMessageConfigResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpTemplateMessageConfigResp.java similarity index 96% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpTemplateMessageConfigResp.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpTemplateMessageConfigResp.java index 6926e9b..fa6dda8 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpTemplateMessageConfigResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpTemplateMessageConfigResp.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.resp; +package com.seer.teach.mp.admin.controller.resp; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpTemplateMessageResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpTemplateMessageResp.java similarity index 96% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpTemplateMessageResp.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpTemplateMessageResp.java index 2e6c581..b81e1ff 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpTemplateMessageResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpTemplateMessageResp.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.resp; +package com.seer.teach.mp.admin.controller.resp; import com.baomidou.mybatisplus.annotation.*; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpWxMpTemplateResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpWxMpTemplateResp.java similarity index 92% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpWxMpTemplateResp.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpWxMpTemplateResp.java index bbdec42..34e3019 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/controller/resp/MpWxMpTemplateResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpWxMpTemplateResp.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.controller.resp; +package com.seer.teach.mp.admin.controller.resp; import lombok.Data; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java new file mode 100644 index 0000000..badb6fd --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java @@ -0,0 +1,24 @@ +package com.seer.teach.mp.admin.convert; + +import com.seer.teach.mp.admin.controller.req.AgentActivityQueryReq; +import com.seer.teach.mp.admin.controller.req.AgentActivityReq; +import com.seer.teach.mp.admin.controller.resp.AgentActivityResp; +import com.seer.teach.mp.entity.MpAgentActivityEntity; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface AdminAgentActivityConvert { + + AdminAgentActivityConvert INSTANCE = Mappers.getMapper(AdminAgentActivityConvert.class); + + MpAgentActivityEntity convert(AgentActivityReq req); + + MpAgentActivityEntity convert(AgentActivityQueryReq req); + + AgentActivityResp convertToResp(MpAgentActivityEntity entity); + + List convertToRespList(List list); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentEmployeeRelationConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentEmployeeRelationConvert.java new file mode 100644 index 0000000..8536d55 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentEmployeeRelationConvert.java @@ -0,0 +1,24 @@ +package com.seer.teach.mp.admin.convert; + +import com.seer.teach.mp.admin.controller.req.AgentEmployeeRelationQueryReq; +import com.seer.teach.mp.admin.controller.req.AgentEmployeeRelationReq; +import com.seer.teach.mp.admin.controller.resp.AgentEmployeeRelationResp; +import com.seer.teach.mp.entity.MpAgentEmployeeRelationEntity; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface AdminAgentEmployeeRelationConvert { + + AdminAgentEmployeeRelationConvert INSTANCE = Mappers.getMapper(AdminAgentEmployeeRelationConvert.class); + + MpAgentEmployeeRelationEntity convert(AgentEmployeeRelationReq req); + + MpAgentEmployeeRelationEntity convert(AgentEmployeeRelationQueryReq req); + + AgentEmployeeRelationResp convertToResp(MpAgentEmployeeRelationEntity entity); + + List convertToRespList(List mpAgentEmployeeRelationEntities); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/AdminDealerApplicationsConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminDealerApplicationsConvert.java similarity index 75% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/AdminDealerApplicationsConvert.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminDealerApplicationsConvert.java index 3d588f8..17f57a3 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/AdminDealerApplicationsConvert.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminDealerApplicationsConvert.java @@ -1,7 +1,7 @@ -package com.seer.teach.mp.convert; +package com.seer.teach.mp.admin.convert; -import com.seer.teach.mp.controller.req.MpDealerApplyQueryReq; -import com.seer.teach.mp.controller.resp.MpDealerApplyResp; +import com.seer.teach.mp.admin.controller.req.MpDealerApplyQueryReq; +import com.seer.teach.mp.admin.controller.resp.MpDealerApplyResp; import com.seer.teach.mp.entity.MpDealerApplicationsEntity; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/AdminMpAccountConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminMpAccountConvert.java similarity index 75% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/AdminMpAccountConvert.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminMpAccountConvert.java index bf12e36..52787b1 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/AdminMpAccountConvert.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminMpAccountConvert.java @@ -1,7 +1,7 @@ -package com.seer.teach.mp.convert; +package com.seer.teach.mp.admin.convert; -import com.seer.teach.mp.controller.req.MpAccountReq; -import com.seer.teach.mp.controller.resp.AdminMpAccountResp; +import com.seer.teach.mp.admin.controller.req.MpAccountReq; +import com.seer.teach.mp.admin.controller.resp.AdminMpAccountResp; import com.seer.teach.mp.entity.MpAccountEntity; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/AdminMpTemplateMessageConfigConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminMpTemplateMessageConfigConvert.java similarity index 74% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/AdminMpTemplateMessageConfigConvert.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminMpTemplateMessageConfigConvert.java index 8a5fb04..26c30ed 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/AdminMpTemplateMessageConfigConvert.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminMpTemplateMessageConfigConvert.java @@ -1,8 +1,8 @@ -package com.seer.teach.mp.convert; +package com.seer.teach.mp.admin.convert; -import com.seer.teach.mp.controller.req.MpTemplateMessageConfigPageQueryReq; -import com.seer.teach.mp.controller.req.MpTemplateMessageConfigReq; -import com.seer.teach.mp.controller.resp.MpTemplateMessageConfigResp; +import com.seer.teach.mp.admin.controller.req.MpTemplateMessageConfigPageQueryReq; +import com.seer.teach.mp.admin.controller.req.MpTemplateMessageConfigReq; +import com.seer.teach.mp.admin.controller.resp.MpTemplateMessageConfigResp; import com.seer.teach.mp.entity.MpTemplateMessageConfigEntity; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AgentConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AgentConvert.java new file mode 100644 index 0000000..c43a47b --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AgentConvert.java @@ -0,0 +1,23 @@ +package com.seer.teach.mp.admin.convert; + +import com.seer.teach.mp.admin.controller.req.AgentQueryReq; +import com.seer.teach.mp.admin.controller.resp.AgentResp; +import com.seer.teach.mp.entity.MpAgentEntity; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface AgentConvert { + + AgentConvert INSTANCE = Mappers.getMapper(AgentConvert.class); + + AgentResp convertOne(MpAgentEntity entity); + + List convertRespList(List list); + + MpAgentEntity convertOne(AgentQueryReq req); + + AgentQueryReq convertToReq(MpAgentEntity entity); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/MpMessageGroupConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/MpMessageGroupConvert.java similarity index 66% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/MpMessageGroupConvert.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/MpMessageGroupConvert.java index 4d6cf34..f087cce 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/MpMessageGroupConvert.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/MpMessageGroupConvert.java @@ -1,9 +1,9 @@ -package com.seer.teach.mp.convert; +package com.seer.teach.mp.admin.convert; -import com.seer.teach.mp.controller.req.MpMessageGroupQueryReq; -import com.seer.teach.mp.controller.req.MpMessageGroupReq; -import com.seer.teach.mp.controller.req.MpMessageGroupUpdateReq; -import com.seer.teach.mp.controller.resp.MpMessageGroupResp; +import com.seer.teach.mp.admin.controller.req.MpMessageGroupQueryReq; +import com.seer.teach.mp.admin.controller.req.MpMessageGroupReq; +import com.seer.teach.mp.admin.controller.req.MpMessageGroupUpdateReq; +import com.seer.teach.mp.admin.controller.resp.MpMessageGroupResp; import com.seer.teach.mp.entity.MpMessageGroupEntity; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/MpMessageGroupUserConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/MpMessageGroupUserConvert.java similarity index 70% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/MpMessageGroupUserConvert.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/MpMessageGroupUserConvert.java index 484d807..32bcb07 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/MpMessageGroupUserConvert.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/MpMessageGroupUserConvert.java @@ -1,8 +1,8 @@ -package com.seer.teach.mp.convert; +package com.seer.teach.mp.admin.convert; -import com.seer.teach.mp.controller.req.MpMessageGroupUserQueryReq; -import com.seer.teach.mp.controller.req.MpMessageGroupUserReq; -import com.seer.teach.mp.controller.resp.MpMessageGroupUserResp; +import com.seer.teach.mp.admin.controller.req.MpMessageGroupUserQueryReq; +import com.seer.teach.mp.admin.controller.req.MpMessageGroupUserReq; +import com.seer.teach.mp.admin.controller.resp.MpMessageGroupUserResp; import com.seer.teach.mp.entity.MpMessageGroupUserEntity; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/MpWxMpTemplateConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/MpWxMpTemplateConvert.java similarity index 80% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/MpWxMpTemplateConvert.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/MpWxMpTemplateConvert.java index a0e3c94..ecfa7dd 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/convert/MpWxMpTemplateConvert.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/MpWxMpTemplateConvert.java @@ -1,7 +1,7 @@ -package com.seer.teach.mp.convert; +package com.seer.teach.mp.admin.convert; -import com.seer.teach.mp.controller.resp.MpTemplateMessageResp; -import com.seer.teach.mp.controller.resp.MpWxMpTemplateResp; +import com.seer.teach.mp.admin.controller.resp.MpTemplateMessageResp; +import com.seer.teach.mp.admin.controller.resp.MpWxMpTemplateResp; import com.seer.teach.mp.entity.MpTemplateMessageEntity; import me.chanjar.weixin.mp.bean.template.WxMpTemplate; import org.mapstruct.Mapper; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminAgentService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminAgentService.java new file mode 100644 index 0000000..1de25bb --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminAgentService.java @@ -0,0 +1,93 @@ +package com.seer.teach.mp.admin.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.utils.PageConverterUtils; +import com.seer.teach.mp.admin.controller.req.AgentQueryReq; +import com.seer.teach.mp.admin.controller.resp.AgentResp; +import com.seer.teach.mp.admin.convert.AgentConvert; +import com.seer.teach.mp.entity.MpAgentEntity; +import com.seer.teach.mp.service.IMpAgentService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@RequiredArgsConstructor +@Service +public class AdminAgentService { + + private final IMpAgentService mpAgentService; + + /** + * 获取代理商列表 + * + * @param pageReq 分页参数 + * @return 代理商列表 + */ + public PageListBean pageList(AgentQueryReq pageReq) { + Page pageParam = new Page<>(pageReq.getPageNo(), pageReq.getPageSize()); + + MpAgentEntity query = AgentConvert.INSTANCE.convertOne(pageReq); + IPage resultPage = mpAgentService.pageList(pageParam, query); + + return PageConverterUtils.convertPageListBean(resultPage, AgentConvert.INSTANCE::convertRespList); + } + + /** + * 获取代理商详情 + * + * @param id 代理商Id + * @return 代理商详情 + */ + public AgentResp getAgentById(Integer id) { + MpAgentEntity agentEntity = mpAgentService.getAgentById(id); + return AgentConvert.INSTANCE.convertOne(agentEntity); + } + + /** + * 保存代理商 + * + * @param agentEntity 代理商实体 + * @return 是否成功 + */ + public Boolean saveAgent(MpAgentEntity agentEntity) { + boolean result = mpAgentService.saveAgent(agentEntity); + log.info("保存代理商结果: {}", result); + return result; + } + + /** + * 更新代理商 + * + * @param agentEntity 代理商实体 + * @return 是否成功 + */ + public Boolean updateAgent(MpAgentEntity agentEntity) { + boolean result = mpAgentService.updateAgent(agentEntity); + log.info("更新代理商结果: {}", result); + return result; + } + + /** + * 删除代理商 + * + * @param ids 代理商ID列表 + * @return 是否成功 + */ + public Boolean deleteById(List ids) { + if(ids == null || ids.isEmpty()){ + log.warn("删除代理商时,ID列表为空"); + return false; + } + boolean result = mpAgentService.removeByIds(ids); + log.info("删除代理商结果: {}", result); + if(result){ + log.info("删除代理商成功,ID列表: {}", ids); + } + return result; + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/service/AdminDealerApplicationsService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminDealerApplicationsService.java similarity index 93% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/service/AdminDealerApplicationsService.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminDealerApplicationsService.java index c1165fc..6f3a456 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/service/AdminDealerApplicationsService.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminDealerApplicationsService.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.service; +package com.seer.teach.mp.admin.service; import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -8,11 +8,12 @@ import com.seer.teach.common.enums.ResultCodeEnum; import com.seer.teach.common.enums.RoleEnum; import com.seer.teach.common.exception.CommonException; import com.seer.teach.common.utils.PageConverterUtils; -import com.seer.teach.mp.controller.req.MpDealerApplyQueryReq; -import com.seer.teach.mp.controller.resp.MpDealerApplyResp; -import com.seer.teach.mp.convert.AdminDealerApplicationsConvert; +import com.seer.teach.mp.admin.controller.req.MpDealerApplyQueryReq; +import com.seer.teach.mp.admin.controller.resp.MpDealerApplyResp; +import com.seer.teach.mp.admin.convert.AdminDealerApplicationsConvert; import com.seer.teach.mp.entity.MpDealerApplicationsEntity; import com.seer.teach.mp.request.DealerApplyReq; +import com.seer.teach.mp.service.IMpDealerApplicationsService; import com.seer.teach.user.api.UserInfoServiceApi; import com.seer.teach.user.api.dto.UserInfoDTO; import lombok.RequiredArgsConstructor; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/service/AdminMpAccountService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminMpAccountService.java similarity index 94% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/service/AdminMpAccountService.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminMpAccountService.java index b0e4f3b..c755dbb 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/service/AdminMpAccountService.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminMpAccountService.java @@ -1,5 +1,5 @@ -package com.seer.teach.mp.service; +package com.seer.teach.mp.admin.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -8,12 +8,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.seer.teach.common.PageListBean; import com.seer.teach.common.utils.PageConverterUtils; import com.seer.teach.mp.api.WechatOfficialAccountApi; -import com.seer.teach.mp.controller.req.MpAccountPageReq; -import com.seer.teach.mp.controller.req.MpAccountReq; -import com.seer.teach.mp.controller.resp.AdminMpAccountResp; -import com.seer.teach.mp.convert.AdminMpAccountConvert; +import com.seer.teach.mp.admin.controller.req.MpAccountPageReq; +import com.seer.teach.mp.admin.controller.req.MpAccountReq; +import com.seer.teach.mp.admin.controller.resp.AdminMpAccountResp; +import com.seer.teach.mp.admin.convert.AdminMpAccountConvert; import com.seer.teach.mp.entity.MpAccountEntity; import com.seer.teach.mp.factory.MpServiceFactory; +import com.seer.teach.mp.service.IMpAccountService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/service/AdminTemplateMessageService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminTemplateMessageService.java similarity index 94% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/service/AdminTemplateMessageService.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminTemplateMessageService.java index d503218..f57580f 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/service/AdminTemplateMessageService.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminTemplateMessageService.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.service; +package com.seer.teach.mp.admin.service; import cn.hutool.core.collection.CollectionUtil; import com.seer.teach.common.enums.ResultCodeEnum; @@ -7,9 +7,10 @@ import com.seer.teach.common.utils.AssertUtils; import com.seer.teach.common.utils.BeanToMapConverter; import com.seer.teach.mall.api.MallOrderApi; import com.seer.teach.mall.api.resp.OrderDTO; -import com.seer.teach.mp.controller.req.MpTemplateMessageReq; +import com.seer.teach.mp.admin.controller.req.MpTemplateMessageReq; import com.seer.teach.mp.entity.MpTemplateMessageEntity; import com.seer.teach.mp.factory.MpServiceFactory; +import com.seer.teach.mp.service.IMpTemplateMessageService; import com.seer.teach.mp.service.dto.MpTemplateMessageDTO; import com.seer.teach.user.api.UserInfoServiceApi; import com.seer.teach.user.api.dto.UserInfoDTO; @@ -34,7 +35,7 @@ public class AdminTemplateMessageService { private MallOrderApi mallOrderApi; @Resource - private IMpTemplateMessageService mpTemplateMessageService; + private IMpTemplateMessageService mpTemplateMessageService; @Resource private MpServiceFactory mpServiceFactory; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityService.java new file mode 100644 index 0000000..5117602 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityService.java @@ -0,0 +1,49 @@ +package com.seer.teach.mp.admin.service; + +import com.seer.teach.common.PageListBean; +import com.seer.teach.mp.admin.controller.resp.AgentActivityResp; +import com.seer.teach.mp.admin.controller.req.AgentActivityQueryReq; +import com.seer.teach.mp.admin.controller.req.AgentActivityReq; + +/** + *

+ * 管理端代理商活动服务类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +public interface IAdminAgentActivityService { + + /** + * 分页查询代理商活动列表(管理端) + * + * @param query 查询条件 + * @return 代理商活动分页列表 + */ + PageListBean pageList(AgentActivityQueryReq query); + + /** + * 创建或更新代理商活动(管理端) + * + * @param request 活动请求对象 + * @return 操作是否成功 + */ + boolean saveOrUpdateActivity(AgentActivityReq request); + + /** + * 删除代理商活动(管理端) + * + * @param id 活动ID + * @return 操作是否成功 + */ + boolean deleteActivity(Integer id); + + /** + * 根据ID获取活动详情(管理端) + * + * @param id 活动ID + * @return 活动详情 + */ + AgentActivityResp getById(Integer id); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentEmployeeRelationService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentEmployeeRelationService.java new file mode 100644 index 0000000..dcc93c9 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentEmployeeRelationService.java @@ -0,0 +1,59 @@ +package com.seer.teach.mp.admin.service; + +import com.seer.teach.common.PageListBean; +import com.seer.teach.mp.admin.controller.resp.AgentEmployeeRelationResp; +import com.seer.teach.mp.admin.controller.req.AgentEmployeeRelationQueryReq; +import com.seer.teach.mp.admin.controller.req.AgentEmployeeRelationReq; + +import java.util.List; + +/** + *

+ * 管理端代理商员工关系服务类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +public interface IAdminAgentEmployeeRelationService { + + /** + * 分页查询代理商员工关联列表(管理端) + * + * @param query 查询条件 + * @return 代理商员工关联分页列表 + */ + PageListBean pageList(AgentEmployeeRelationQueryReq query); + + /** + * 创建或更新代理商员工关联(管理端) + * + * @param request 关联请求对象 + * @return 操作是否成功 + */ + boolean saveOrUpdateRelation(AgentEmployeeRelationReq request); + + /** + * 删除代理商员工关联(管理端) + * + * @param id 关联ID + * @return 操作是否成功 + */ + boolean deleteRelation(Integer id); + + /** + * 根据ID获取详情(管理端) + * + * @param id 关联ID + * @return 关联详情 + */ + AgentEmployeeRelationResp getById(Integer id); + + /** + * 根据代理商ID获取员工列表(管理端) + * + * @param agentId 代理商ID + * @return 员工关联列表 + */ + List getEmployeeRelationsByAgentId(Integer agentId); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityServiceImpl.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityServiceImpl.java new file mode 100644 index 0000000..de9d2cb --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityServiceImpl.java @@ -0,0 +1,59 @@ +package com.seer.teach.mp.admin.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.utils.PageConverterUtils; +import com.seer.teach.mp.admin.service.IAdminAgentActivityService; +import com.seer.teach.mp.admin.controller.req.AgentActivityQueryReq; +import com.seer.teach.mp.admin.controller.req.AgentActivityReq; +import com.seer.teach.mp.admin.controller.resp.AgentActivityResp; +import com.seer.teach.mp.admin.convert.AdminAgentActivityConvert; +import com.seer.teach.mp.entity.MpAgentActivityEntity; +import com.seer.teach.mp.service.IMpAgentActivityService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + *

+ * 管理端代理商活动服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Service +@RequiredArgsConstructor +public class AdminAgentActivityServiceImpl implements IAdminAgentActivityService { + + private final IMpAgentActivityService agentActivityService; + + @Override + public PageListBean pageList(AgentActivityQueryReq query) { + Page page = new Page<>(query.getPageNo(), query.getPageSize()); + var pageResult = agentActivityService.page(page, new LambdaQueryWrapper<>(MpAgentActivityEntity.class) + .like(StringUtils.isNotBlank(query.getActivityName()), MpAgentActivityEntity::getActivityName, query.getActivityName()) + .eq(Objects.nonNull(query.getStatus()), MpAgentActivityEntity::getStatus, query.getStatus())); + return PageConverterUtils.convertPageListBean(pageResult, AdminAgentActivityConvert.INSTANCE::convertToRespList); + } + + @Override + public boolean saveOrUpdateActivity(AgentActivityReq request) { + MpAgentActivityEntity entity = AdminAgentActivityConvert.INSTANCE.convert(request); + return agentActivityService.saveOrUpdateActivity(entity); + } + + @Override + public boolean deleteActivity(Integer id) { + return agentActivityService.deleteActivity(id); + } + + @Override + public AgentActivityResp getById(Integer id) { + MpAgentActivityEntity entity = agentActivityService.getById(id); + return AdminAgentActivityConvert.INSTANCE.convertToResp(entity); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentEmployeeRelationServiceImpl.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentEmployeeRelationServiceImpl.java new file mode 100644 index 0000000..a37ac75 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentEmployeeRelationServiceImpl.java @@ -0,0 +1,69 @@ +package com.seer.teach.mp.admin.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.utils.PageConverterUtils; +import com.seer.teach.mp.admin.service.IAdminAgentEmployeeRelationService; +import com.seer.teach.mp.admin.controller.req.AgentEmployeeRelationQueryReq; +import com.seer.teach.mp.admin.controller.req.AgentEmployeeRelationReq; +import com.seer.teach.mp.admin.controller.resp.AgentEmployeeRelationResp; +import com.seer.teach.mp.admin.convert.AdminAgentEmployeeRelationConvert; +import com.seer.teach.mp.entity.MpAgentEmployeeRelationEntity; +import com.seer.teach.mp.service.IMpAgentEmployeeRelationService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +/** + *

+ * 管理端代理商员工关系服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Service +@RequiredArgsConstructor +public class AdminAgentEmployeeRelationServiceImpl implements IAdminAgentEmployeeRelationService { + + private final IMpAgentEmployeeRelationService agentEmployeeRelationService; + + @Override + public PageListBean pageList(AgentEmployeeRelationQueryReq query) { + Page pageParm = new Page<>(query.getPageNo(), query.getPageSize()); + var pageResult = agentEmployeeRelationService.page(pageParm, new LambdaQueryWrapper<>(MpAgentEmployeeRelationEntity.class) + .eq(Objects.nonNull(query.getAgentId()), MpAgentEmployeeRelationEntity::getAgentId, query.getAgentId()) + .eq(Objects.nonNull(query.getEmployeeUserId()), MpAgentEmployeeRelationEntity::getEmployeeUserId, query.getEmployeeUserId()) + .eq(Objects.nonNull(query.getStatus()), MpAgentEmployeeRelationEntity::getStatus, query.getStatus())); + + return PageConverterUtils.convertPageListBean(pageResult, AdminAgentEmployeeRelationConvert.INSTANCE::convertToRespList); + } + + @Override + public boolean saveOrUpdateRelation(AgentEmployeeRelationReq request) { + MpAgentEmployeeRelationEntity entity = AdminAgentEmployeeRelationConvert.INSTANCE.convert(request); + return agentEmployeeRelationService.saveOrUpdateRelation(entity); + } + + @Override + public boolean deleteRelation(Integer id) { + return agentEmployeeRelationService.deleteRelation(id); + } + + @Override + public AgentEmployeeRelationResp getById(Integer id) { + MpAgentEmployeeRelationEntity entity = agentEmployeeRelationService.getById(id); + return AdminAgentEmployeeRelationConvert.INSTANCE.convertToResp(entity); + } + + @Override + public List getEmployeeRelationsByAgentId(Integer agentId) { + var relations = agentEmployeeRelationService.getEmployeeRelationsByAgentId(agentId); + return relations.stream() + .map(AdminAgentEmployeeRelationConvert.INSTANCE::convertToResp) + .toList(); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/utils/ClassFieldUtils.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/utils/ClassFieldUtils.java similarity index 99% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/utils/ClassFieldUtils.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/utils/ClassFieldUtils.java index dce7a8e..9e49519 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/utils/ClassFieldUtils.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/utils/ClassFieldUtils.java @@ -1,4 +1,4 @@ -package com.seer.teach.mp.utils; +package com.seer.teach.mp.admin.utils; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.databind.BeanDescription; diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java new file mode 100644 index 0000000..1b6d3be --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java @@ -0,0 +1,55 @@ +package com.seer.teach.mp.app.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.annotation.DecryptionAnnotation; +import com.seer.teach.common.annotation.EncryptionAnnotation; +import com.seer.teach.common.annotation.LogPrint; +import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; +import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; +import com.seer.teach.mp.app.convert.AppAgentActivityConvert; +import com.seer.teach.mp.app.service.IAppAgentActivityService; +import com.seer.teach.mp.entity.MpAgentActivityEntity; +import com.seer.teach.mp.service.IMpAgentActivityService; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 代理商活动App控制器 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Tag(name = "APP - 代理商活动") +@RestController +@RequestMapping("/app/agent/activity") +@LogPrint +@EncryptionAnnotation +@DecryptionAnnotation +@RequiredArgsConstructor +public class AppAgentActivityController { + + private final IAppAgentActivityService agentActivityService; + + @Operation(summary = "代理商活动列表") + @GetMapping("/page-list") + @SaCheckPermission("mp:app:agent:activity:list") + public ResultBean> pageList(AppAgentActivityQueryReq query) { + return ResultBean.success(agentActivityService.pageList(query)); + } + + @Operation(summary = "查看活动详情") + @GetMapping("/{id}") + @SaCheckPermission("mp:app:agent:activity:get") + public ResultBean get(@PathVariable Integer id) { + return ResultBean.success(agentActivityService.getById(id)); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java new file mode 100644 index 0000000..5d4c472 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java @@ -0,0 +1,45 @@ +package com.seer.teach.mp.app.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.annotation.DecryptionAnnotation; +import com.seer.teach.common.annotation.EncryptionAnnotation; +import com.seer.teach.common.annotation.LogPrint; +import com.seer.teach.mp.app.controller.resp.AgentActivityParticipantResp; +import com.seer.teach.user.api.dto.UserInfoDTO; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 代理商活动参与记录App控制器 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Tag(name = "APP - 代理商活动参与记录") +@RestController +@RequestMapping("/app/agent/activity/participant") +@LogPrint +@EncryptionAnnotation +@DecryptionAnnotation +@RequiredArgsConstructor +public class AppAgentActivityParticipantController { + + private final com.seer.teach.mp.app.service.IAppAgentActivityParticipantService agentActivityParticipantService; + + + @Operation(summary = "获取代理商参与的活动中的家长列表") + @GetMapping("/parents-by-agent") + @SaCheckPermission("mp:app:agent:participant:parents") + public ResultBean> getParentsByAgentAndActivity( + @RequestParam("activityId") Integer activityId,@RequestParam("agentId") Integer agentId) { + return ResultBean.success(agentActivityParticipantService.getParticipantsByActivityAndAgent(activityId, agentId)); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppAgentActivityQueryReq.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppAgentActivityQueryReq.java new file mode 100644 index 0000000..b0b74b2 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppAgentActivityQueryReq.java @@ -0,0 +1,16 @@ +package com.seer.teach.mp.app.controller.req; + +import com.seer.teach.common.request.PageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(name = "AppAgentActivityQueryReq", description = "代理商活动查询请求参数") +@Data +public class AppAgentActivityQueryReq extends PageRequest { + + @Schema(description = "活动名称") + private String activityName; + + @Schema(description = "活动状态:0-禁用,1-启用") + private Integer status; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppAgentEmployeeRelationQueryReq.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppAgentEmployeeRelationQueryReq.java new file mode 100644 index 0000000..45caef8 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppAgentEmployeeRelationQueryReq.java @@ -0,0 +1,16 @@ +package com.seer.teach.mp.app.controller.req; + +import com.seer.teach.common.request.PageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(name = "AppAgentEmployeeRelationQueryReq", description = "代理商员工关联查询请求参数") +@Data +public class AppAgentEmployeeRelationQueryReq extends PageRequest { + + @Schema(description = "员工职位") + private String position; + + @Schema(description = "员工状态:0-禁用,1-启用") + private Integer status; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParticipantResp.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParticipantResp.java new file mode 100644 index 0000000..181d1a4 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParticipantResp.java @@ -0,0 +1,23 @@ +package com.seer.teach.mp.app.controller.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(name = "AgentActivityParticipant", description = "代理商活动参与记录") +@Data +public class AgentActivityParticipantResp { + + private Integer id; + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "家长ID") + private Integer parentId; + + @Schema(description = "家长手机号") + private String parentMobile; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentActivityResp.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentActivityResp.java new file mode 100644 index 0000000..2389372 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentActivityResp.java @@ -0,0 +1,34 @@ +package com.seer.teach.mp.app.controller.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(name = "AppAgentActivityResp", description = "代理商活动响应参数") +@Data +public class AppAgentActivityResp { + + private Integer id; + + @Schema(description = "活动名称") + private String activityName; + + @Schema(description = "活动描述") + private String description; + + @Schema(description = "活动开始时间") + private LocalDateTime startTime; + + @Schema(description = "活动结束时间") + private LocalDateTime endTime; + + @Schema(description = "活动状态:0-禁用,1-启用") + private Integer status; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentEmployeeRelationResp.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentEmployeeRelationResp.java new file mode 100644 index 0000000..818b163 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentEmployeeRelationResp.java @@ -0,0 +1,32 @@ +package com.seer.teach.mp.app.controller.resp; + +import com.seer.teach.user.api.dto.UserInfoDTO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(name = "AppAgentEmployeeRelationResp", description = "代理商员工关联响应参数") +@Data +public class AppAgentEmployeeRelationResp { + + private Integer id; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "员工用户信息") + private UserInfoDTO employeeUserInfo; + + @Schema(description = "员工职位") + private String position; + + @Schema(description = "员工状态:0-禁用,1-启用") + private Integer status; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java new file mode 100644 index 0000000..04825a1 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java @@ -0,0 +1,24 @@ +package com.seer.teach.mp.app.convert; + +import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; +import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; +import com.seer.teach.mp.entity.MpAgentActivityEntity; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface AppAgentActivityConvert { + + AppAgentActivityConvert INSTANCE = Mappers.getMapper(AppAgentActivityConvert.class); + + MpAgentActivityEntity convert(AppAgentActivityQueryReq req); + + @Mapping(target = "createTime", dateFormat = "yyyy-MM-dd HH:mm:ss") + @Mapping(target = "updateTime", dateFormat = "yyyy-MM-dd HH:mm:ss") + AppAgentActivityResp convertToResp(MpAgentActivityEntity entity); + + List convertToRespList(List mpAgentActivityEntities); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParticipantService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParticipantService.java new file mode 100644 index 0000000..a24788c --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParticipantService.java @@ -0,0 +1,26 @@ +package com.seer.teach.mp.app.service; + +import com.seer.teach.mp.app.controller.resp.AgentActivityParticipantResp; + +import java.util.List; + +/** + *

+ * APP端代理商活动参与记录服务类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +public interface IAppAgentActivityParticipantService { + + /** + * 根据活动ID和代理商ID获取参与记录 + * + * @param activityId 活动ID + * @param agentId 代理商ID + * @return 参与记录列表 + */ + List getParticipantsByActivityAndAgent(Integer activityId, Integer agentId); + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java new file mode 100644 index 0000000..63d9a17 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java @@ -0,0 +1,35 @@ +package com.seer.teach.mp.app.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.seer.teach.common.PageListBean; +import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; +import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; +import com.seer.teach.mp.entity.MpAgentActivityEntity; + +/** + *

+ * APP端代理商活动服务类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +public interface IAppAgentActivityService { + + /** + * 分页查询代理商活动列表 + * + * @param query 查询条件 + * @return 代理商活动分页列表 + */ + PageListBean pageList(AppAgentActivityQueryReq query); + + /** + * 根据ID获取活动详情 + * + * @param id 活动ID + * @return 活动详情 + */ + AppAgentActivityResp getById(Integer id); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParticipantServiceImpl.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParticipantServiceImpl.java new file mode 100644 index 0000000..f84fd72 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParticipantServiceImpl.java @@ -0,0 +1,68 @@ +package com.seer.teach.mp.app.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.seer.teach.mp.app.controller.resp.AgentActivityParticipantResp; +import com.seer.teach.mp.app.service.IAppAgentActivityParticipantService; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import com.seer.teach.mp.service.IMpAgentActivityParticipantService; +import com.seer.teach.user.api.UserInfoServiceApi; +import com.seer.teach.user.api.dto.UserInfoDTO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; + +/** + *

+ * APP端代理商活动参与记录服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Service +@RequiredArgsConstructor +public class AppAgentActivityParticipantServiceImpl implements IAppAgentActivityParticipantService { + + private final IMpAgentActivityParticipantService agentActivityParticipantService; + + private final UserInfoServiceApi userInfoServiceApi; + + @Override + public List getParticipantsByActivityAndAgent(Integer activityId, Integer agentId) { + var participants = agentActivityParticipantService.getParticipantsByActivityAndAgent(activityId, agentId); + + if (CollectionUtil.isEmpty(participants)) { + return List.of(); + } + // 提取家长ID + Set parentIds = participants.stream().map(MpAgentActivityParticipantEntity::getParentId).collect(Collectors.toSet()); + + List parentInfos = userInfoServiceApi.getListByUserIds(parentIds); + + var parentInfoMap = parentInfos.stream().collect(Collectors.toMap(UserInfoDTO::getId, parentInfo -> parentInfo)); + + return participants.stream() + .map(entity -> convertToDto(entity, parentInfoMap)) + .collect(Collectors.toList()); + } + + + + private AgentActivityParticipantResp convertToDto(MpAgentActivityParticipantEntity entity, Map parentInfoMap) { + AgentActivityParticipantResp resp = new AgentActivityParticipantResp(); + resp.setId(entity.getId()); + resp.setActivityId(entity.getActivityId()); + resp.setAgentId(entity.getAgentId()); + resp.setParentId(entity.getParentId()); + UserInfoDTO userInfoDTO = parentInfoMap.get(entity.getParentId()); + if(Objects.nonNull(userInfoDTO)){ + resp.setParentMobile(userInfoDTO.getMobile()); + } + return resp; + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java new file mode 100644 index 0000000..ddad960 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java @@ -0,0 +1,56 @@ +package com.seer.teach.mp.app.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.utils.PageConverterUtils; +import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; +import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; +import com.seer.teach.mp.app.convert.AppAgentActivityConvert; +import com.seer.teach.mp.app.service.IAppAgentActivityService; +import com.seer.teach.mp.entity.MpAgentActivityEntity; +import com.seer.teach.mp.service.IMpAgentActivityService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + *

+ * APP端代理商活动服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AppAgentActivityServiceImpl implements IAppAgentActivityService { + + private final IMpAgentActivityService agentActivityService; + + @Override + public PageListBean pageList(AppAgentActivityQueryReq query) { + log.info("查询参数:{}", query); + IPage page = new Page<>(query.getPageNo(), query.getPageSize()); + var pageResult = agentActivityService.page(page, new LambdaQueryWrapper<>(MpAgentActivityEntity.class) + .like(StringUtils.isNotBlank(query.getActivityName()), MpAgentActivityEntity::getActivityName, query.getActivityName()) + .eq(Objects.nonNull(query.getStatus()), MpAgentActivityEntity::getStatus, query.getStatus())); + if(Objects.isNull(pageResult) || CollectionUtil.isEmpty(pageResult.getRecords())){ + log.info("查询结果为空"); + } + log.info("查询代理商活动数量:{}", pageResult.getTotal()); + return PageConverterUtils.convertPageListBean(pageResult, AppAgentActivityConvert.INSTANCE::convertToRespList); + } + + @Override + public AppAgentActivityResp getById(Integer id) { + MpAgentActivityEntity entity = agentActivityService.getById(id); + return AppAgentActivityConvert.INSTANCE.convertToResp(entity); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/api/impl/MpAgentServiceApiImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/api/impl/MpAgentServiceApiImpl.java new file mode 100644 index 0000000..2a59844 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/api/impl/MpAgentServiceApiImpl.java @@ -0,0 +1,36 @@ +package com.seer.teach.mp.api.impl; + +import com.seer.teach.common.ResultBean; +import com.seer.teach.mp.api.dto.AgentActivityParticipantDTO; +import com.seer.teach.mp.service.IMpAgentActivityParticipantService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.stream.Collectors; + +@RestController +@RequiredArgsConstructor +public class MpAgentServiceApiImpl implements MpAgentServiceApi { + + private final IMpAgentActivityParticipantService agentActivityParticipantService; + + @Override + public ResultBean> getParticipantParents(Integer activityId, Integer agentId) { + var participants = agentActivityParticipantService.getParticipantsByActivityAndAgent(activityId, agentId); + List result = participants.stream() + .map(participant -> { + AgentActivityParticipantDTO dto = new AgentActivityParticipantDTO(); + dto.setId(participant.getId()); + dto.setActivityId(participant.getActivityId()); + dto.setAgentId(participant.getAgentId()); + dto.setParentId(participant.getParentId()); + dto.setCreateTime(participant.getCreateTime()); + dto.setUpdateTime(participant.getUpdateTime()); + return dto; + }) + .collect(Collectors.toList()); + + return ResultBean.success(result); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java new file mode 100644 index 0000000..930e675 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java @@ -0,0 +1,108 @@ +package com.seer.teach.mp.cache; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.seer.teach.common.utils.RedisUtil; +import com.seer.teach.mp.entity.MpAgentActivityEntity; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.Duration; +import java.util.List; + +/** + * 代理商活动缓存服务 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class MpAgentActivityCache { + + private final RedisUtil redisUtil; + + private static final String AGENT_ACTIVITY_PREFIX = "mp:agent:activity:"; + private static final String AGENT_ACTIVITY_LIST_PREFIX = "mp:agent:activity:list:"; + private static final Duration CACHE_TTL = Duration.ofMinutes(30); + + /** + * 获取活动详情缓存 + */ + public MpAgentActivityEntity getActivityById(Integer id) { + String key = AGENT_ACTIVITY_PREFIX + id; + String value = redisUtil.get(key); + if (value != null) { + try { + return cn.hutool.json.JSONUtil.toBean(value, MpAgentActivityEntity.class); + } catch (Exception e) { + log.error("从缓存获取活动详情失败, id: {}", id, e); + } + } + return null; + } + + /** + * 设置活动详情缓存 + */ + public void setActivityById(Integer id, MpAgentActivityEntity entity) { + String key = AGENT_ACTIVITY_PREFIX + id; + try { + String value = cn.hutool.json.JSONUtil.toJsonStr(entity); + redisUtil.set(key, value, CACHE_TTL.toSeconds()); + } catch (Exception e) { + log.error("设置活动详情缓存失败, id: {}", id, e); + } + } + + /** + * 删除活动详情缓存 + */ + public void deleteActivityById(Integer id) { + String key = AGENT_ACTIVITY_PREFIX + id; + redisUtil.del(key); + } + + /** + * 获取活动列表缓存 + */ + public List getActivityList(String keySuffix) { + String key = AGENT_ACTIVITY_LIST_PREFIX + keySuffix; + String value = redisUtil.get(key); + if (value != null) { + try { + return cn.hutool.json.JSONUtil.toList(value, MpAgentActivityEntity.class); + } catch (Exception e) { + log.error("从缓存获取活动列表失败, key: {}", key, e); + } + } + return null; + } + + /** + * 设置活动列表缓存 + */ + public void setActivityList(String keySuffix, List entities) { + String key = AGENT_ACTIVITY_LIST_PREFIX + keySuffix; + try { + String value = cn.hutool.json.JSONUtil.toJsonStr(entities); + redisUtil.set(key, value, CACHE_TTL.toSeconds()); + } catch (Exception e) { + log.error("设置活动列表缓存失败, key: {}", key, e); + } + } + + /** + * 删除活动列表缓存 + */ + public void deleteActivityList(String keySuffix) { + String key = AGENT_ACTIVITY_LIST_PREFIX + keySuffix; + redisUtil.del(key); + } + + /** + * 清除所有活动相关缓存 + */ + public void clearAllActivityCache() { + // 可以通过通配符删除,但这里简单地提供一个清理方法 + log.info("清除所有代理商活动缓存"); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityErrorCodeEnum.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityErrorCodeEnum.java new file mode 100644 index 0000000..eb4aacf --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityErrorCodeEnum.java @@ -0,0 +1,25 @@ +package com.seer.teach.mp.exception; + +import com.seer.teach.common.enums.ResultCodeEnum; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 代理商活动错误码枚举 + */ +@Getter +@AllArgsConstructor +public enum AgentActivityErrorCodeEnum implements ResultCodeEnum { + + ACTIVITY_NOT_FOUND(404, "活动不存在"), + ACTIVITY_ALREADY_EXISTS(409, "活动已存在"), + ACTIVITY_NOT_ACTIVE(400, "活动未开始或已结束"), + PARTICIPATION_FAILED(500, "参与活动失败"), + INVALID_AGENT(403, "无效的代理商"), + AGENT_NOT_FOUND(404, "代理商不存在"), + PARENT_NOT_FOUND(404, "家长不存在"), + INVALID_ACTIVITY_STATUS(400, "无效的活动状态"); + + private final Integer code; + private final String message; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityException.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityException.java new file mode 100644 index 0000000..8c323fb --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityException.java @@ -0,0 +1,24 @@ +package com.seer.teach.mp.exception; + +import com.seer.teach.common.enums.ResultCodeEnum; +import com.seer.teach.common.exception.CommonException; +import lombok.Getter; + +/** + * 代理商活动相关异常 + */ +@Getter +public class AgentActivityException extends CommonException { + + public AgentActivityException(ResultCodeEnum resultCodeEnum) { + super(resultCodeEnum); + } + + public AgentActivityException(ResultCodeEnum resultCodeEnum, String message) { + super(resultCodeEnum, message); + } + + public AgentActivityException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentErrorCodeEnum.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentErrorCodeEnum.java new file mode 100644 index 0000000..ee1ef03 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentErrorCodeEnum.java @@ -0,0 +1,32 @@ +package com.seer.teach.mp.exception; + +import com.seer.teach.common.exception.ErrorCode; + +/** + * 代理商相关错误码枚举 + */ +public enum AgentErrorCodeEnum implements ErrorCode { + + AGENT_NOT_FOUND(40001, "代理商不存在"), + AGENT_CODE_EXISTS(40002, "代理商编码已存在"), + AGENT_STATUS_INVALID(40003, "代理商状态无效"), + AGENT_CONTACT_INFO_INVALID(40004, "联系信息无效"); + + private final int code; + private final String message; + + AgentErrorCodeEnum(int code, String message) { + this.code = code; + this.message = message; + } + + @Override + public int getCode() { + return code; + } + + @Override + public String getMessage() { + return message; + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentException.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentException.java new file mode 100644 index 0000000..c79eee8 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentException.java @@ -0,0 +1,26 @@ +package com.seer.teach.mp.exception; + +import com.seer.teach.common.exception.BusinessException; +import com.seer.teach.common.exception.ErrorCode; + +/** + * 代理商业务异常类 + */ +public class AgentException extends BusinessException { + + public AgentException(ErrorCode errorCode) { + super(errorCode); + } + + public AgentException(ErrorCode errorCode, String detailMessage) { + super(errorCode, detailMessage); + } + + public AgentException(String message, Throwable cause) { + super(message, cause); + } + + public AgentException(ErrorCode errorCode, String detailMessage, Throwable cause) { + super(errorCode, detailMessage, cause); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityLogService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityLogService.java new file mode 100644 index 0000000..3069e27 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityLogService.java @@ -0,0 +1,29 @@ +package com.seer.teach.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.seer.teach.mp.entity.MpAgentActivityLogEntity; + +/** + *

+ * 代理商活动操作日志表 服务类 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +public interface IMpAgentActivityLogService extends IService { + + /** + * 记录代理商活动操作日志 + * + * @param activityId 活动ID + * @param operatorId 操作人ID + * @param operationType 操作类型 + * @param description 操作描述 + * @param beforeData 操作前数据 + * @param afterData 操作后数据 + * @return 操作是否成功 + */ + boolean logOperation(Integer activityId, Integer operatorId, String operationType, + String description, String beforeData, String afterData); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java new file mode 100644 index 0000000..f371f00 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java @@ -0,0 +1,44 @@ +package com.seer.teach.mp.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; + +import java.util.List; + +/** + *

+ * 代理商活动参与记录表 服务类 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +public interface IMpAgentActivityParticipantService extends IService { + + /** + * 分页查询活动参与记录列表 + * + * @param pageParm 分页参数 + * @param query 查询条件 + * @return 活动参与记录分页列表 + */ + IPage pageList(com.baomidou.mybatisplus.extension.plugins.pagination.Page pageParm, MpAgentActivityParticipantEntity query); + + /** + * 添加活动参与记录 + * + * @param entity 参与记录实体 + * @return 操作是否成功 + */ + boolean addParticipant(MpAgentActivityParticipantEntity entity); + + /** + * 根据活动ID和代理商ID获取参与记录 + * + * @param activityId 活动ID + * @param agentId 代理商ID + * @return 参与记录列表 + */ + List getParticipantsByActivityAndAgent(Integer activityId, Integer agentId); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityService.java new file mode 100644 index 0000000..065eaab --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityService.java @@ -0,0 +1,32 @@ +package com.seer.teach.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.seer.teach.mp.entity.MpAgentActivityEntity; + +/** + *

+ * 代理商活动表 服务类 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +public interface IMpAgentActivityService extends IService { + + + /** + * 创建或更新代理商活动 + * + * @param entity 活动实体 + * @return 操作是否成功 + */ + boolean saveOrUpdateActivity(MpAgentActivityEntity entity); + + /** + * 删除代理商活动 + * + * @param id 活动ID + * @return 操作是否成功 + */ + boolean deleteActivity(Integer id); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentEmployeeRelationService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentEmployeeRelationService.java new file mode 100644 index 0000000..b75e157 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentEmployeeRelationService.java @@ -0,0 +1,58 @@ +package com.seer.teach.mp.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.seer.teach.mp.entity.MpAgentEmployeeRelationEntity; + +/** + *

+ * 代理商员工关联表 服务类 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +public interface IMpAgentEmployeeRelationService extends IService { + + /** + * 分页查询代理商员工关联列表 + * + * @param pageParm 分页参数 + * @param query 查询条件 + * @return 代理商员工关联分页列表 + */ + IPage pageList(com.baomidou.mybatisplus.extension.plugins.pagination.Page pageParm, MpAgentEmployeeRelationEntity query); + + /** + * 创建或更新代理商员工关联 + * + * @param entity 关联实体 + * @return 操作是否成功 + */ + boolean saveOrUpdateRelation(MpAgentEmployeeRelationEntity entity); + + /** + * 删除代理商员工关联 + * + * @param id 关联ID + * @return 操作是否成功 + */ + boolean deleteRelation(Integer id); + + /** + * 根据代理商ID获取员工列表 + * + * @param agentId 代理商ID + * @return 员工关联列表 + */ + java.util.List getEmployeeRelationsByAgentId(Integer agentId); + + /** + * 检查用户是否为代理商的员工 + * + * @param agentId 代理商ID + * @param employeeUserId 员工用户ID + * @return 是否为员工 + */ + boolean isEmployeeOfAgent(Integer agentId, Integer employeeUserId); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentService.java new file mode 100644 index 0000000..50dd2d2 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentService.java @@ -0,0 +1,58 @@ +package com.seer.teach.mp.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.seer.teach.mp.entity.MpAgentEntity; +import com.seer.teach.common.utils.PageUtils; +import java.util.Map; + +/** + * 代理商服务接口 + */ +public interface IMpAgentService extends IService { + + /** + * 分页查询代理商列表 + * @param params 查询参数 + * @return 分页结果 + */ + PageUtils queryPage(Map params); + + /** + * 分页查询代理商列表 + * @param page 分页参数 + * @param query 查询条件 + * @return 分页结果 + */ + IPage pageList(Page page, MpAgentEntity query); + + /** + * 根据ID获取代理商信息 + * @param id 代理商ID + * @return 代理商实体 + * @throws AgentException 当代理商不存在时抛出异常 + */ + MpAgentEntity getAgentById(Integer id); + + /** + * 保存代理商信息 + * @param agentEntity 代理商实体 + * @throws AgentException 当代理商信息验证失败或编码已存在时抛出异常 + */ + boolean saveAgent(MpAgentEntity agentEntity); + + /** + * 更新代理商信息 + * @param agentEntity 代理商实体 + * @throws AgentException 当代理商不存在、信息验证失败或编码已存在时抛出异常 + */ + boolean updateAgent(MpAgentEntity agentEntity); + + /** + * 删除代理商 + * @param id 代理商ID + * @throws AgentException 当代理商不存在时抛出异常 + */ + void deleteAgent(Integer id); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMqMessageGroupService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMqMessageGroupService.java index 747c287..cfc86f7 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMqMessageGroupService.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMqMessageGroupService.java @@ -20,7 +20,7 @@ public interface IMqMessageGroupService extends IService { * 创建消息群组 * @param params */ - void crateMesGroup(MpMessageGroupEntity params); + boolean crateMesGroup(MpMessageGroupEntity params); /** * 根据ID查询消息群组 @@ -42,11 +42,11 @@ public interface IMqMessageGroupService extends IService { * @param id * @return */ - void updateMesGroup(MpMessageGroupEntity params, Integer id); + boolean updateMesGroup(MpMessageGroupEntity params, Integer id); /** * 删除消息群组 * @param id */ - void deleteById(Integer id); + boolean deleteById(Integer id); } diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityLogServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityLogServiceImpl.java new file mode 100644 index 0000000..5aa5168 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityLogServiceImpl.java @@ -0,0 +1,48 @@ +package com.seer.teach.mp.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.seer.teach.mp.entity.MpAgentActivityLogEntity; +import com.seer.teach.mp.mapper.MpAgentActivityLogMapper; +import com.seer.teach.mp.service.IMpAgentActivityLogService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + *

+ * 代理商活动操作日志表 服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MpAgentActivityLogServiceImpl extends ServiceImpl implements IMpAgentActivityLogService { + + @Override + public boolean logOperation(Integer activityId, Integer operatorId, String operationType, + String description, String beforeData, String afterData) { + try { + MpAgentActivityLogEntity logEntity = new MpAgentActivityLogEntity(); + logEntity.setActivityId(activityId); + logEntity.setOperatorId(operatorId); + logEntity.setOperationType(operationType); + logEntity.setDescription(description); + logEntity.setBeforeData(beforeData); + logEntity.setAfterData(afterData); + + boolean result = this.save(logEntity); + if (result) { + log.info("代理商活动操作日志记录成功,活动ID: {}, 操作类型: {}", activityId, operationType); + } else { + log.warn("代理商活动操作日志记录失败,活动ID: {}", activityId); + } + return result; + } catch (Exception e) { + log.error("记录代理商活动操作日志时发生异常,活动ID: {}", activityId, e); + return false; + } + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java new file mode 100644 index 0000000..e309570 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java @@ -0,0 +1,120 @@ +package com.seer.teach.mp.service.impl; + +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.seer.teach.common.utils.AssertUtils; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import com.seer.teach.mp.exception.AgentActivityErrorCodeEnum; +import com.seer.teach.mp.mapper.MpAgentActivityParticipantMapper; +import com.seer.teach.mp.service.IMpAgentActivityLogService; +import com.seer.teach.mp.service.IMpAgentActivityParticipantService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 代理商活动参与记录表 服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MpAgentActivityParticipantServiceImpl extends ServiceImpl implements IMpAgentActivityParticipantService { + + private final IMpAgentActivityLogService agentActivityLogService; + + @Override + public IPage pageList(Page pageParm, MpAgentActivityParticipantEntity query) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + if (query != null) { + if (query.getActivityId() != null) { + queryWrapper.eq(MpAgentActivityParticipantEntity::getActivityId, query.getActivityId()); + } + if (query.getAgentId() != null) { + queryWrapper.eq(MpAgentActivityParticipantEntity::getAgentId, query.getAgentId()); + } + if (query.getParentId() != null) { + queryWrapper.eq(MpAgentActivityParticipantEntity::getParentId, query.getParentId()); + } + } + + queryWrapper.orderByDesc(MpAgentActivityParticipantEntity::getCreateTime); + + return baseMapper.selectPage(pageParm, queryWrapper); + } + + @Override + public boolean addParticipant(MpAgentActivityParticipantEntity entity) { + // 验证参与记录数据 + validateParticipant(entity); + + // 检查是否已存在相同的参与记录 + LambdaQueryWrapper queryWrapper = + new LambdaQueryWrapper() + .eq(MpAgentActivityParticipantEntity::getActivityId, entity.getActivityId()) + .eq(MpAgentActivityParticipantEntity::getAgentId, entity.getAgentId()) + .eq(MpAgentActivityParticipantEntity::getParentId, entity.getParentId()); + + long count = this.count(queryWrapper); + if (count > 0) { + // 如果已存在,则不重复添加 + throw new com.seer.teach.mp.exception.AgentActivityException(AgentActivityErrorCodeEnum.PARTICIPATION_FAILED, "已参与该活动"); + } + + entity.setCreateTime(LocalDateTime.now()); + entity.setUpdateTime(LocalDateTime.now()); + + boolean result = this.save(entity); + + // 记录操作日志 + if (result) { + String beforeData = ""; + String afterData = JSONUtil.toJsonStr(entity); + String description = "代理商参与活动,代理商ID: " + entity.getAgentId() + ", 家长ID: " + entity.getParentId(); + + agentActivityLogService.logOperation( + entity.getActivityId(), + entity.getAgentId(), + "参与活动", + description, + beforeData, + afterData + ); + } + + return result; + } + + /** + * 验证参与记录数据 + */ + private void validateParticipant(MpAgentActivityParticipantEntity entity) { + AssertUtils.notNull(entity.getActivityId(), AgentActivityErrorCodeEnum.ACTIVITY_NOT_FOUND, "活动ID不能为空"); + AssertUtils.notNull(entity.getAgentId(), AgentActivityErrorCodeEnum.INVALID_AGENT, "代理商ID不能为空"); + AssertUtils.notNull(entity.getParentId(), AgentActivityErrorCodeEnum.PARENT_NOT_FOUND, "家长ID不能为空"); + + // 检查活动是否存在 + // 这里可以调用活动服务检查活动是否存在,暂时跳过 + } + + @Override + public List getParticipantsByActivityAndAgent(Integer activityId, Integer agentId) { + LambdaQueryWrapper queryWrapper = + new LambdaQueryWrapper() + .eq(MpAgentActivityParticipantEntity::getActivityId, activityId) + .eq(MpAgentActivityParticipantEntity::getAgentId, agentId); + + return this.list(queryWrapper); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityServiceImpl.java new file mode 100644 index 0000000..b2e7aa7 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityServiceImpl.java @@ -0,0 +1,166 @@ +package com.seer.teach.mp.service.impl; + +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.seer.teach.common.utils.AssertUtils; +import com.seer.teach.mp.cache.MpAgentActivityCache; +import com.seer.teach.mp.entity.MpAgentActivityEntity; +import com.seer.teach.mp.entity.MpAgentActivityLogEntity; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import com.seer.teach.mp.exception.AgentActivityErrorCodeEnum; +import com.seer.teach.mp.mapper.MpAgentActivityMapper; +import com.seer.teach.mp.service.IMpAgentActivityLogService; +import com.seer.teach.mp.service.IMpAgentActivityService; +import com.seer.teach.mp.service.IMpAgentActivityParticipantService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 代理商活动表 服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MpAgentActivityServiceImpl extends ServiceImpl implements IMpAgentActivityService { + + private final IMpAgentActivityParticipantService agentActivityParticipantService; + private final MpAgentActivityCache agentActivityCache; + private final IMpAgentActivityLogService agentActivityLogService; + + @Override + public boolean saveOrUpdateActivity(MpAgentActivityEntity entity) { + // 验证活动数据 + validateActivity(entity); + + MpAgentActivityEntity oldEntity = null; + String operationType = "创建"; + + if (entity.getId() != null) { + // 更新操作,先获取旧数据用于日志记录 + oldEntity = super.getById(entity.getId()); + operationType = "更新"; + } + + if (entity.getId() == null) { + // 新增时设置创建时间 + entity.setCreateTime(LocalDateTime.now()); + } + entity.setUpdateTime(LocalDateTime.now()); + + boolean result = this.saveOrUpdate(entity); + + // 记录操作日志 + if (result) { + String beforeData = oldEntity != null ? JSONUtil.toJsonStr(oldEntity) : ""; + String afterData = JSONUtil.toJsonStr(entity); + String description = operationType + "代理商活动: " + entity.getActivityName(); + + agentActivityLogService.logOperation( + entity.getId(), + entity.getCreatorId(), + operationType, + description, + beforeData, + afterData + ); + } + + return result; + } + + /** + * 验证活动数据 + */ + private void validateActivity(MpAgentActivityEntity entity) { + AssertUtils.notBlank(entity.getActivityName(), AgentActivityErrorCodeEnum.ACTIVITY_ALREADY_EXISTS, "活动名称不能为空"); + AssertUtils.notNull(entity.getStartTime(), AgentActivityErrorCodeEnum.INVALID_ACTIVITY_STATUS, "活动开始时间不能为空"); + AssertUtils.notNull(entity.getEndTime(), AgentActivityErrorCodeEnum.INVALID_ACTIVITY_STATUS, "活动结束时间不能为空"); + + // 检查开始时间不能晚于结束时间 + if (entity.getStartTime().isAfter(entity.getEndTime())) { + throw new com.seer.teach.mp.exception.AgentActivityException(AgentActivityErrorCodeEnum.INVALID_ACTIVITY_STATUS, "活动开始时间不能晚于结束时间"); + } + + // 如果是更新操作,检查活动是否存在 + if (entity.getId() != null) { + MpAgentActivityEntity existing = super.getById(entity.getId()); + AssertUtils.notNull(existing, AgentActivityErrorCodeEnum.ACTIVITY_NOT_FOUND, "活动不存在"); + } + } + + @Override + public boolean deleteActivity(Integer id) { + // 检查活动是否存在 + MpAgentActivityEntity existing = super.getById(id); + AssertUtils.notNull(existing, AgentActivityErrorCodeEnum.ACTIVITY_NOT_FOUND, "活动不存在"); + + // 删除活动前先删除相关的参与记录 + LambdaQueryWrapper participantWrapper = + new LambdaQueryWrapper() + .eq(MpAgentActivityParticipantEntity::getActivityId, id); + agentActivityParticipantService.remove(participantWrapper); + + // 删除缓存 + agentActivityCache.deleteActivityById(id); + + boolean result = this.removeById(id); + + // 记录操作日志 + if (result) { + String beforeData = JSONUtil.toJsonStr(existing); + String afterData = ""; + String description = "删除代理商活动: " + existing.getActivityName(); + + agentActivityLogService.logOperation( + id, + existing.getCreatorId(), + "删除", + description, + beforeData, + afterData + ); + } + + return result; + } + + @Override + public MpAgentActivityEntity getById(Integer id) { + // 先从缓存获取 + MpAgentActivityEntity cached = agentActivityCache.getActivityById(id); + if (cached != null) { + return cached; + } + + // 从数据库获取 + MpAgentActivityEntity entity = super.getById(id); + if (entity != null) { + // 存入缓存 + agentActivityCache.setActivityById(id, entity); + } + + return entity; + } + + @Override + public boolean saveOrUpdate(MpAgentActivityEntity entity) { + boolean result = super.saveOrUpdate(entity); + if (result && entity.getId() != null) { + // 更新缓存 + agentActivityCache.setActivityById(entity.getId(), entity); + } + return result; + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentEmployeeRelationServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentEmployeeRelationServiceImpl.java new file mode 100644 index 0000000..96bdeac --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentEmployeeRelationServiceImpl.java @@ -0,0 +1,113 @@ +package com.seer.teach.mp.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.seer.teach.mp.entity.MpAgentEmployeeRelationEntity; +import com.seer.teach.mp.mapper.MpAgentEmployeeRelationMapper; +import com.seer.teach.mp.service.IMpAgentEmployeeRelationService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 代理商员工关联表 服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MpAgentEmployeeRelationServiceImpl extends ServiceImpl implements IMpAgentEmployeeRelationService { + + @Override + public IPage pageList(Page pageParm, MpAgentEmployeeRelationEntity query) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + if (query != null) { + if (query.getAgentId() != null) { + queryWrapper.eq(MpAgentEmployeeRelationEntity::getAgentId, query.getAgentId()); + } + if (query.getEmployeeUserId() != null) { + queryWrapper.eq(MpAgentEmployeeRelationEntity::getEmployeeUserId, query.getEmployeeUserId()); + } + if (query.getStatus() != null) { + queryWrapper.eq(MpAgentEmployeeRelationEntity::getStatus, query.getStatus()); + } + } + + queryWrapper.orderByDesc(MpAgentEmployeeRelationEntity::getCreateTime); + + return baseMapper.selectPage(pageParm, queryWrapper); + } + + @Override + public boolean saveOrUpdateRelation(MpAgentEmployeeRelationEntity entity) { + // 验证数据 + validateRelation(entity); + + if (entity.getId() == null) { + // 检查是否已存在相同的关联关系 + LambdaQueryWrapper checkWrapper = + new LambdaQueryWrapper() + .eq(MpAgentEmployeeRelationEntity::getAgentId, entity.getAgentId()) + .eq(MpAgentEmployeeRelationEntity::getEmployeeUserId, entity.getEmployeeUserId()); + + long count = this.count(checkWrapper); + if (count > 0) { + throw new com.seer.teach.mp.exception.AgentActivityException( + com.seer.teach.mp.exception.AgentActivityErrorCodeEnum.PARTICIPATION_FAILED, + "员工已关联到代理商" + ); + } + + // 新增时设置创建时间 + entity.setCreateTime(LocalDateTime.now()); + } + entity.setUpdateTime(LocalDateTime.now()); + return this.saveOrUpdate(entity); + } + + @Override + public boolean deleteRelation(Integer id) { + return this.removeById(id); + } + + @Override + public List getEmployeeRelationsByAgentId(Integer agentId) { + LambdaQueryWrapper queryWrapper = + new LambdaQueryWrapper() + .eq(MpAgentEmployeeRelationEntity::getAgentId, agentId) + .orderByDesc(MpAgentEmployeeRelationEntity::getCreateTime); + + return this.list(queryWrapper); + } + + @Override + public boolean isEmployeeOfAgent(Integer agentId, Integer employeeUserId) { + LambdaQueryWrapper queryWrapper = + new LambdaQueryWrapper() + .eq(MpAgentEmployeeRelationEntity::getAgentId, agentId) + .eq(MpAgentEmployeeRelationEntity::getEmployeeUserId, employeeUserId) + .eq(MpAgentEmployeeRelationEntity::getStatus, 1); // 只检查启用状态的关联 + + return this.count(queryWrapper) > 0; + } + + /** + * 验证关联数据 + */ + private void validateRelation(MpAgentEmployeeRelationEntity entity) { + com.seer.teach.common.utils.AssertUtils.notNull(entity.getAgentId(), + com.seer.teach.mp.exception.AgentActivityErrorCodeEnum.INVALID_AGENT, "代理商ID不能为空"); + com.seer.teach.common.utils.AssertUtils.notNull(entity.getEmployeeUserId(), + com.seer.teach.mp.exception.AgentActivityErrorCodeEnum.PARENT_NOT_FOUND, "员工用户ID不能为空"); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java new file mode 100644 index 0000000..c63f341 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java @@ -0,0 +1,168 @@ +package com.seer.teach.mp.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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.seer.teach.common.utils.PageUtils; +import com.seer.teach.mp.entity.MpAgentEntity; +import com.seer.teach.mp.exception.AgentErrorCodeEnum; +import com.seer.teach.mp.exception.AgentException; +import com.seer.teach.mp.mapper.MpAgentMapper; +import com.seer.teach.mp.service.IMpAgentService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.Map; + +/** + * 代理商服务实现类 + */ +@Service +public class MpAgentServiceImpl extends ServiceImpl implements IMpAgentService { + + @Override + public PageUtils queryPage(Map params) { + IPage page = this.page( + new Page(Long.parseLong(params.getOrDefault("current", "1").toString()), + Long.parseLong(params.getOrDefault("size", "10").toString())) + ); + return new PageUtils(page); + } + + @Override + public IPage pageList(Page page, MpAgentEntity query) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + if (query != null) { + if (query.getAgentName() != null && !query.getAgentName().trim().isEmpty()) { + queryWrapper.like("agent_name", query.getAgentName()); + } + if (query.getAgentCode() != null && !query.getAgentCode().trim().isEmpty()) { + queryWrapper.eq("agent_code", query.getAgentCode()); + } + if (query.getAgentLevel() != null && !query.getAgentLevel().trim().isEmpty()) { + queryWrapper.eq("agent_level", query.getAgentLevel()); + } + if (query.getContactName() != null && !query.getContactName().trim().isEmpty()) { + queryWrapper.like("contact_name", query.getContactName()); + } + if (query.getContactPhone() != null && !query.getContactPhone().trim().isEmpty()) { + queryWrapper.eq("contact_phone", query.getContactPhone()); + } + if (query.getStatus() != null) { + queryWrapper.eq("status", query.getStatus()); + } + } + + queryWrapper.orderByDesc("create_time"); + + return this.page(page, queryWrapper); + } + + @Override + public MpAgentEntity getAgentById(Integer id) { + if (id == null || id <= 0) { + throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商ID不能为空"); + } + MpAgentEntity agent = this.getById(id); + if (agent == null) { + throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND); + } + return agent; + } + + @Override + @Transactional + public boolean saveAgent(MpAgentEntity agentEntity) { + validateAgent(agentEntity); + + // 检查代理商编码是否已存在 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("agent_code", agentEntity.getAgentCode()); + int count = this.count(queryWrapper); + if (count > 0) { + throw new AgentException(AgentErrorCodeEnum.AGENT_CODE_EXISTS); + } + + agentEntity.setCreateTime(LocalDateTime.now()); + agentEntity.setUpdateTime(LocalDateTime.now()); + + boolean result = this.save(agentEntity); + return result; + } + + @Override + @Transactional + public boolean updateAgent(MpAgentEntity agentEntity) { + validateAgent(agentEntity); + + if (agentEntity.getId() == null || agentEntity.getId() <= 0) { + throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商ID不能为空"); + } + + // 检查代理商是否存在 + MpAgentEntity existingAgent = this.getById(agentEntity.getId()); + if (existingAgent == null) { + throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND); + } + + // 检查代理商编码是否被其他代理商使用 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("agent_code", agentEntity.getAgentCode()); + queryWrapper.ne("id", agentEntity.getId()); + int count = this.count(queryWrapper); + if (count > 0) { + throw new AgentException(AgentErrorCodeEnum.AGENT_CODE_EXISTS); + } + + agentEntity.setUpdateTime(LocalDateTime.now()); + + boolean result = this.updateById(agentEntity); + return result; + } + + @Override + @Transactional + public void deleteAgent(Integer id) { + if (id == null || id <= 0) { + throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商ID不能为空"); + } + + MpAgentEntity agent = this.getById(id); + if (agent == null) { + throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND); + } + + this.removeById(id); + } + + /** + * 验证代理商实体 + */ + private void validateAgent(MpAgentEntity agentEntity) { + if (agentEntity == null) { + throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商信息不能为空"); + } + + if (agentEntity.getAgentName() == null || agentEntity.getAgentName().trim().isEmpty()) { + throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商名称不能为空"); + } + + if (agentEntity.getAgentCode() == null || agentEntity.getAgentCode().trim().isEmpty()) { + throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商编码不能为空"); + } + + if (agentEntity.getStatus() != null && (agentEntity.getStatus() != 0 && agentEntity.getStatus() != 1)) { + throw new AgentException(AgentErrorCodeEnum.AGENT_STATUS_INVALID, "代理商状态必须为0或1"); + } + + if (agentEntity.getContactPhone() != null && !agentEntity.getContactPhone().trim().isEmpty()) { + // 简单验证手机号格式 + if (!agentEntity.getContactPhone().matches("^1[3-9]\d{9}$")) { + throw new AgentException(AgentErrorCodeEnum.AGENT_CONTACT_INFO_INVALID, "联系电话格式不正确"); + } + } + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MqMessageGroupServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MqMessageGroupServiceImpl.java index b81e7b1..0e4def0 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MqMessageGroupServiceImpl.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MqMessageGroupServiceImpl.java @@ -33,7 +33,7 @@ public class MqMessageGroupServiceImpl extends ServiceImpl() .eq(MpMessageGroupEntity::getGroupName, params.getGroupName())); if(one != null){ @@ -42,8 +42,7 @@ public class MqMessageGroupServiceImpl extends ServiceImpl Date: Tue, 30 Dec 2025 11:40:55 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=EF=BC=8C=E6=B4=BB=E5=8A=A8=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E5=91=98=E5=B7=A5=E5=85=B3=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E6=B4=BB=E5=8A=A8=E5=8F=82=E4=B8=8E=E8=80=85=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ivityEntity.java => MpActivityEntity.java} | 2 +- .../mp/mapper/MpAgentActivityMapper.java | 4 +- ...ller.java => AdminActivityController.java} | 28 +++--- ...yQueryReq.java => MpActivityQueryReq.java} | 4 +- ...entActivityReq.java => MpActivityReq.java} | 4 +- ...tivityResp.java => AdminActivityResp.java} | 4 +- .../convert/AdminAgentActivityConvert.java | 16 ++-- ...ervice.java => IAdminActivityService.java} | 14 +-- ...mpl.java => AdminActivityServiceImpl.java} | 34 +++---- .../V1.0.2__add_agent_activity_tables.sql | 93 +++++++++++++++++++ .../AppAgentActivityController.java | 6 -- .../app/convert/AppAgentActivityConvert.java | 8 +- .../app/service/IAppAgentActivityService.java | 3 - .../impl/AppAgentActivityServiceImpl.java | 16 ++-- .../teach/mp/cache/MpAgentActivityCache.java | 15 ++- ...tyService.java => IMpActivityService.java} | 6 +- ...ceImpl.java => MpActivityServiceImpl.java} | 28 +++--- 17 files changed, 182 insertions(+), 103 deletions(-) rename seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/{MpAgentActivityEntity.java => MpActivityEntity.java} (95%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/{AdminAgentActivityController.java => AdminActivityController.java} (65%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/{AgentActivityQueryReq.java => MpActivityQueryReq.java} (70%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/{AgentActivityReq.java => MpActivityReq.java} (88%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/{AgentActivityResp.java => AdminActivityResp.java} (89%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/{IAdminAgentActivityService.java => IAdminActivityService.java} (65%) rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/{AdminAgentActivityServiceImpl.java => AdminActivityServiceImpl.java} (50%) create mode 100644 seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql rename seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/{IMpAgentActivityService.java => IMpActivityService.java} (70%) rename seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/{MpAgentActivityServiceImpl.java => MpActivityServiceImpl.java} (83%) diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpActivityEntity.java similarity index 95% rename from seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityEntity.java rename to seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpActivityEntity.java index 0bb743b..037b524 100644 --- a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityEntity.java +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpActivityEntity.java @@ -21,7 +21,7 @@ import java.time.LocalDateTime; @Setter @TableName("mp_activities") @Schema(name = "MpAgentActivityEntity对象", description = "活动表") -public class MpAgentActivityEntity extends BaseEntity { +public class MpActivityEntity extends BaseEntity { /** * 活动名称,如千人助学计划 diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityMapper.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityMapper.java index db2e6a0..a624f70 100644 --- a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityMapper.java +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpAgentActivityMapper.java @@ -1,7 +1,7 @@ package com.seer.teach.mp.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.seer.teach.mp.entity.MpAgentActivityEntity; +import com.seer.teach.mp.entity.MpActivityEntity; import org.apache.ibatis.annotations.Mapper; /** @@ -13,6 +13,6 @@ import org.apache.ibatis.annotations.Mapper; * @since 2025-12-29 */ @Mapper -public interface MpAgentActivityMapper extends BaseMapper { +public interface MpAgentActivityMapper extends BaseMapper { } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityController.java similarity index 65% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityController.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityController.java index 6ca703a..2cbb360 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityController.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityController.java @@ -4,10 +4,10 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import com.seer.teach.common.PageListBean; import com.seer.teach.common.ResultBean; import com.seer.teach.common.annotation.LogPrint; -import com.seer.teach.mp.admin.controller.req.AgentActivityQueryReq; -import com.seer.teach.mp.admin.controller.req.AgentActivityReq; -import com.seer.teach.mp.admin.controller.resp.AgentActivityResp; -import com.seer.teach.mp.admin.service.IAdminAgentActivityService; +import com.seer.teach.mp.admin.controller.req.MpActivityQueryReq; +import com.seer.teach.mp.admin.controller.req.MpActivityReq; +import com.seer.teach.mp.admin.controller.resp.AdminActivityResp; +import com.seer.teach.mp.admin.service.IAdminActivityService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; @@ -23,27 +23,27 @@ import org.springframework.web.bind.annotation.RestController; @LogPrint @RequiredArgsConstructor @RestController -@Tag(name = "管理端 - 代理商活动") +@Tag(name = "管理端 - 活动") @RequestMapping("/mp/agent/activity") -public class AdminAgentActivityController { +public class AdminActivityController { - private final IAdminAgentActivityService agentActivityService; + private final IAdminActivityService agentActivityService; - @Operation(summary = "代理商活动列表") + @Operation(summary = "活动列表") @GetMapping("/page-list") @SaCheckPermission("mp:admin:agent:activity:list") - public ResultBean> pageList(AgentActivityQueryReq query) { + public ResultBean> pageList(MpActivityQueryReq query) { return ResultBean.success(agentActivityService.pageList(query)); } - @Operation(summary = "创建或更新代理商活动") + @Operation(summary = "创建或更新活动") @PostMapping("/save") @SaCheckPermission("mp:admin:agent:activity:save") - public ResultBean save(@Valid @RequestBody AgentActivityReq request) { + public ResultBean save(@Valid @RequestBody MpActivityReq request) { return ResultBean.success(agentActivityService.saveOrUpdateActivity(request)); } - @Operation(summary = "删除代理商活动") + @Operation(summary = "删除活动") @DeleteMapping("/{id}") @SaCheckPermission("mp:admin:agent:activity:delete") public ResultBean delete(@PathVariable Integer id) { @@ -53,8 +53,8 @@ public class AdminAgentActivityController { @Operation(summary = "详情") @GetMapping("/{id}") @SaCheckPermission("mp:admin:agent:activity:get") - public ResultBean get(@PathVariable Integer id) { - AgentActivityResp result = agentActivityService.getById(id); + public ResultBean get(@PathVariable Integer id) { + AdminActivityResp result = agentActivityService.getById(id); return ResultBean.success(result); } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpActivityQueryReq.java similarity index 70% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityQueryReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpActivityQueryReq.java index 21b3bd2..5666250 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityQueryReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpActivityQueryReq.java @@ -4,9 +4,9 @@ import com.seer.teach.common.request.PageRequest; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -@Schema(name = "AgentActivityQueryReq", description = "代理商活动查询请求参数") +@Schema(name = "MpActivityQueryReq", description = "代理商活动查询请求参数") @Data -public class AgentActivityQueryReq extends PageRequest { +public class MpActivityQueryReq extends PageRequest { @Schema(description = "活动名称") private String activityName; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpActivityReq.java similarity index 88% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityReq.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpActivityReq.java index 646bb7d..4e8ea77 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityReq.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpActivityReq.java @@ -7,9 +7,9 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import java.time.LocalDateTime; -@Schema(name = "AgentActivityReq", description = "代理商活动请求参数") +@Schema(name = "MpActivityReq", description = "代理商活动请求参数") @Data -public class AgentActivityReq { +public class MpActivityReq { @Schema(description = "活动ID") private Integer id; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentActivityResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityResp.java similarity index 89% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentActivityResp.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityResp.java index a452d7f..59e84b9 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AgentActivityResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityResp.java @@ -5,9 +5,9 @@ import lombok.Data; import java.time.LocalDateTime; -@Schema(name = "AgentActivityResp", description = "代理商活动响应参数") +@Schema(name = "AdminActivityResp", description = "代理商活动响应参数") @Data -public class AgentActivityResp { +public class AdminActivityResp { private Integer id; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java index badb6fd..1e911a1 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java @@ -1,9 +1,9 @@ package com.seer.teach.mp.admin.convert; -import com.seer.teach.mp.admin.controller.req.AgentActivityQueryReq; -import com.seer.teach.mp.admin.controller.req.AgentActivityReq; -import com.seer.teach.mp.admin.controller.resp.AgentActivityResp; -import com.seer.teach.mp.entity.MpAgentActivityEntity; +import com.seer.teach.mp.admin.controller.req.MpActivityQueryReq; +import com.seer.teach.mp.admin.controller.req.MpActivityReq; +import com.seer.teach.mp.admin.controller.resp.AdminActivityResp; +import com.seer.teach.mp.entity.MpActivityEntity; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -14,11 +14,11 @@ public interface AdminAgentActivityConvert { AdminAgentActivityConvert INSTANCE = Mappers.getMapper(AdminAgentActivityConvert.class); - MpAgentActivityEntity convert(AgentActivityReq req); + MpActivityEntity convert(MpActivityReq req); - MpAgentActivityEntity convert(AgentActivityQueryReq req); + MpActivityEntity convert(MpActivityQueryReq req); - AgentActivityResp convertToResp(MpAgentActivityEntity entity); + AdminActivityResp convertToResp(MpActivityEntity entity); - List convertToRespList(List list); + List convertToRespList(List list); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminActivityService.java similarity index 65% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityService.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminActivityService.java index 5117602..93a6fb3 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityService.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminActivityService.java @@ -1,9 +1,9 @@ package com.seer.teach.mp.admin.service; import com.seer.teach.common.PageListBean; -import com.seer.teach.mp.admin.controller.resp.AgentActivityResp; -import com.seer.teach.mp.admin.controller.req.AgentActivityQueryReq; -import com.seer.teach.mp.admin.controller.req.AgentActivityReq; +import com.seer.teach.mp.admin.controller.req.MpActivityQueryReq; +import com.seer.teach.mp.admin.controller.req.MpActivityReq; +import com.seer.teach.mp.admin.controller.resp.AdminActivityResp; /** *

@@ -13,7 +13,7 @@ import com.seer.teach.mp.admin.controller.req.AgentActivityReq; * @author Lingma * @since 2025-12-30 */ -public interface IAdminAgentActivityService { +public interface IAdminActivityService { /** * 分页查询代理商活动列表(管理端) @@ -21,7 +21,7 @@ public interface IAdminAgentActivityService { * @param query 查询条件 * @return 代理商活动分页列表 */ - PageListBean pageList(AgentActivityQueryReq query); + PageListBean pageList(MpActivityQueryReq query); /** * 创建或更新代理商活动(管理端) @@ -29,7 +29,7 @@ public interface IAdminAgentActivityService { * @param request 活动请求对象 * @return 操作是否成功 */ - boolean saveOrUpdateActivity(AgentActivityReq request); + boolean saveOrUpdateActivity(MpActivityReq request); /** * 删除代理商活动(管理端) @@ -45,5 +45,5 @@ public interface IAdminAgentActivityService { * @param id 活动ID * @return 活动详情 */ - AgentActivityResp getById(Integer id); + AdminActivityResp getById(Integer id); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityServiceImpl.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityServiceImpl.java similarity index 50% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityServiceImpl.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityServiceImpl.java index de9d2cb..5faad37 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityServiceImpl.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityServiceImpl.java @@ -4,13 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.seer.teach.common.PageListBean; import com.seer.teach.common.utils.PageConverterUtils; -import com.seer.teach.mp.admin.service.IAdminAgentActivityService; -import com.seer.teach.mp.admin.controller.req.AgentActivityQueryReq; -import com.seer.teach.mp.admin.controller.req.AgentActivityReq; -import com.seer.teach.mp.admin.controller.resp.AgentActivityResp; +import com.seer.teach.mp.admin.controller.req.MpActivityQueryReq; +import com.seer.teach.mp.admin.controller.req.MpActivityReq; +import com.seer.teach.mp.admin.controller.resp.AdminActivityResp; +import com.seer.teach.mp.admin.service.IAdminActivityService; import com.seer.teach.mp.admin.convert.AdminAgentActivityConvert; -import com.seer.teach.mp.entity.MpAgentActivityEntity; -import com.seer.teach.mp.service.IMpAgentActivityService; +import com.seer.teach.mp.entity.MpActivityEntity; +import com.seer.teach.mp.service.IMpActivityService; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -27,22 +27,22 @@ import java.util.Objects; */ @Service @RequiredArgsConstructor -public class AdminAgentActivityServiceImpl implements IAdminAgentActivityService { +public class AdminActivityServiceImpl implements IAdminActivityService { - private final IMpAgentActivityService agentActivityService; + private final IMpActivityService agentActivityService; @Override - public PageListBean pageList(AgentActivityQueryReq query) { - Page page = new Page<>(query.getPageNo(), query.getPageSize()); - var pageResult = agentActivityService.page(page, new LambdaQueryWrapper<>(MpAgentActivityEntity.class) - .like(StringUtils.isNotBlank(query.getActivityName()), MpAgentActivityEntity::getActivityName, query.getActivityName()) - .eq(Objects.nonNull(query.getStatus()), MpAgentActivityEntity::getStatus, query.getStatus())); + public PageListBean pageList(MpActivityQueryReq query) { + Page page = new Page<>(query.getPageNo(), query.getPageSize()); + var pageResult = agentActivityService.page(page, new LambdaQueryWrapper<>(MpActivityEntity.class) + .like(StringUtils.isNotBlank(query.getActivityName()), MpActivityEntity::getActivityName, query.getActivityName()) + .eq(Objects.nonNull(query.getStatus()), MpActivityEntity::getStatus, query.getStatus())); return PageConverterUtils.convertPageListBean(pageResult, AdminAgentActivityConvert.INSTANCE::convertToRespList); } @Override - public boolean saveOrUpdateActivity(AgentActivityReq request) { - MpAgentActivityEntity entity = AdminAgentActivityConvert.INSTANCE.convert(request); + public boolean saveOrUpdateActivity(MpActivityReq request) { + MpActivityEntity entity = AdminAgentActivityConvert.INSTANCE.convert(request); return agentActivityService.saveOrUpdateActivity(entity); } @@ -52,8 +52,8 @@ public class AdminAgentActivityServiceImpl implements IAdminAgentActivityService } @Override - public AgentActivityResp getById(Integer id) { - MpAgentActivityEntity entity = agentActivityService.getById(id); + public AdminActivityResp getById(Integer id) { + MpActivityEntity entity = agentActivityService.getById(id); return AdminAgentActivityConvert.INSTANCE.convertToResp(entity); } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql b/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql new file mode 100644 index 0000000..4bf6cbb --- /dev/null +++ b/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql @@ -0,0 +1,93 @@ +-- 创建代理商表 +CREATE TABLE `mp_agents` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '代理商ID', + `agent_name` varchar(255) NOT NULL COMMENT '代理商名称', + `agent_code` varchar(100) NOT NULL COMMENT '代理商编码', + `agent_level` varchar(50) DEFAULT NULL COMMENT '代理商等级', + `contact_name` varchar(100) DEFAULT NULL COMMENT '联系人姓名', + `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话', + `address` varchar(500) DEFAULT NULL COMMENT '代理商地址', + `status` tinyint NOT NULL DEFAULT '1' COMMENT '代理商状态:0-禁用,1-启用', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '创建人', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '修改人', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` varchar(20) DEFAULT 'Default' COMMENT '租户id', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_agent_code` (`agent_code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商表'; + +-- 创建代理商员工关联表 +CREATE TABLE `mp_agent_employee_relations` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '关联ID', + `agent_id` int NOT NULL COMMENT '代理商ID(对应user表的ID)', + `employee_user_id` int NOT NULL COMMENT '员工用户ID(对应user表的ID)', + `position` varchar(50) COMMENT '员工职位', + `status` tinyint NOT NULL DEFAULT '1' COMMENT '员工状态:0-禁用,1-启用', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '创建人', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '修改人', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` varchar(20) DEFAULT 'Default' COMMENT '租户id', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_agent_employee` (`agent_id`, `employee_user_id`), + KEY `idx_agent_id` (`agent_id`), + KEY `idx_employee_user_id` (`employee_user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商员工关联表'; + +-- 创建活动表 +CREATE TABLE `mp_activities` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '活动ID', + `activity_name` varchar(255) NOT NULL COMMENT '活动名称,如千人助学计划', + `description` text COMMENT '活动描述', + `start_time` datetime NOT NULL COMMENT '活动开始时间', + `end_time` datetime NOT NULL COMMENT '活动结束时间', + `status` tinyint NOT NULL DEFAULT '1' COMMENT '活动状态:0-禁用,1-启用', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '创建人', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '修改人', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` varchar(20) DEFAULT 'Default' COMMENT '租户id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商活动表'; + +-- 创建代理商活动参与记录表 +CREATE TABLE `mp_agent_activity_participants` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '参与记录ID', + `activity_id` int NOT NULL COMMENT '活动ID', + `agent_id` int NOT NULL COMMENT '代理商ID', + `parent_id` int NOT NULL COMMENT '家长ID(对应user表的ID)', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '创建人', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '修改人', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` varchar(20) DEFAULT 'Default' COMMENT '租户id', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_activity_agent` (`activity_id`, `agent_id`), + KEY `idx_parent_id` (`parent_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商活动参与记录表'; + +-- 创建代理商活动操作日志表 +CREATE TABLE `mp_agent_activity_log` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '日志ID', + `activity_id` int DEFAULT NULL COMMENT '活动ID', + `operator_id` int DEFAULT NULL COMMENT '操作人ID', + `operation_type` varchar(50) DEFAULT NULL COMMENT '操作类型', + `description` text COMMENT '操作描述', + `before_data` text COMMENT '操作前数据(JSON格式)', + `after_data` text COMMENT '操作后数据(JSON格式)', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标记(0-正常,1-已删除)', + `create_by` varchar(20) DEFAULT NULL COMMENT '创建人', + `update_by` varchar(20) DEFAULT NULL COMMENT '修改人', + `tenant_id` varchar(20) DEFAULT 'Default' COMMENT '租户id', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_activity_id` (`activity_id`), + KEY `idx_operator_id` (`operator_id`), + KEY `idx_create_time` (`create_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商活动操作日志表'; \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java index 1b6d3be..1b7a910 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java @@ -1,7 +1,6 @@ package com.seer.teach.mp.app.controller; import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.dev33.satoken.stp.StpUtil; import com.seer.teach.common.PageListBean; import com.seer.teach.common.ResultBean; import com.seer.teach.common.annotation.DecryptionAnnotation; @@ -9,17 +8,12 @@ import com.seer.teach.common.annotation.EncryptionAnnotation; import com.seer.teach.common.annotation.LogPrint; import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; -import com.seer.teach.mp.app.convert.AppAgentActivityConvert; import com.seer.teach.mp.app.service.IAppAgentActivityService; -import com.seer.teach.mp.entity.MpAgentActivityEntity; -import com.seer.teach.mp.service.IMpAgentActivityService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import java.util.List; - /** *

* 代理商活动App控制器 diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java index 04825a1..aa50833 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java @@ -2,7 +2,7 @@ package com.seer.teach.mp.app.convert; import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; -import com.seer.teach.mp.entity.MpAgentActivityEntity; +import com.seer.teach.mp.entity.MpActivityEntity; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; @@ -14,11 +14,11 @@ public interface AppAgentActivityConvert { AppAgentActivityConvert INSTANCE = Mappers.getMapper(AppAgentActivityConvert.class); - MpAgentActivityEntity convert(AppAgentActivityQueryReq req); + MpActivityEntity convert(AppAgentActivityQueryReq req); @Mapping(target = "createTime", dateFormat = "yyyy-MM-dd HH:mm:ss") @Mapping(target = "updateTime", dateFormat = "yyyy-MM-dd HH:mm:ss") - AppAgentActivityResp convertToResp(MpAgentActivityEntity entity); + AppAgentActivityResp convertToResp(MpActivityEntity entity); - List convertToRespList(List mpAgentActivityEntities); + List convertToRespList(List mpAgentActivityEntities); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java index 63d9a17..7f15766 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java @@ -1,11 +1,8 @@ package com.seer.teach.mp.app.service; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.IService; import com.seer.teach.common.PageListBean; import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; -import com.seer.teach.mp.entity.MpAgentActivityEntity; /** *

diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java index ddad960..f53ab8a 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java @@ -10,8 +10,8 @@ import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; import com.seer.teach.mp.app.convert.AppAgentActivityConvert; import com.seer.teach.mp.app.service.IAppAgentActivityService; -import com.seer.teach.mp.entity.MpAgentActivityEntity; -import com.seer.teach.mp.service.IMpAgentActivityService; +import com.seer.teach.mp.entity.MpActivityEntity; +import com.seer.teach.mp.service.IMpActivityService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -32,15 +32,15 @@ import java.util.Objects; @RequiredArgsConstructor public class AppAgentActivityServiceImpl implements IAppAgentActivityService { - private final IMpAgentActivityService agentActivityService; + private final IMpActivityService agentActivityService; @Override public PageListBean pageList(AppAgentActivityQueryReq query) { log.info("查询参数:{}", query); - IPage page = new Page<>(query.getPageNo(), query.getPageSize()); - var pageResult = agentActivityService.page(page, new LambdaQueryWrapper<>(MpAgentActivityEntity.class) - .like(StringUtils.isNotBlank(query.getActivityName()), MpAgentActivityEntity::getActivityName, query.getActivityName()) - .eq(Objects.nonNull(query.getStatus()), MpAgentActivityEntity::getStatus, query.getStatus())); + IPage page = new Page<>(query.getPageNo(), query.getPageSize()); + var pageResult = agentActivityService.page(page, new LambdaQueryWrapper<>(MpActivityEntity.class) + .like(StringUtils.isNotBlank(query.getActivityName()), MpActivityEntity::getActivityName, query.getActivityName()) + .eq(Objects.nonNull(query.getStatus()), MpActivityEntity::getStatus, query.getStatus())); if(Objects.isNull(pageResult) || CollectionUtil.isEmpty(pageResult.getRecords())){ log.info("查询结果为空"); } @@ -50,7 +50,7 @@ public class AppAgentActivityServiceImpl implements IAppAgentActivityService { @Override public AppAgentActivityResp getById(Integer id) { - MpAgentActivityEntity entity = agentActivityService.getById(id); + MpActivityEntity entity = agentActivityService.getById(id); return AppAgentActivityConvert.INSTANCE.convertToResp(entity); } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java index 930e675..a55d554 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java @@ -1,8 +1,7 @@ package com.seer.teach.mp.cache; -import com.fasterxml.jackson.core.type.TypeReference; import com.seer.teach.common.utils.RedisUtil; -import com.seer.teach.mp.entity.MpAgentActivityEntity; +import com.seer.teach.mp.entity.MpActivityEntity; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -27,12 +26,12 @@ public class MpAgentActivityCache { /** * 获取活动详情缓存 */ - public MpAgentActivityEntity getActivityById(Integer id) { + public MpActivityEntity getActivityById(Integer id) { String key = AGENT_ACTIVITY_PREFIX + id; String value = redisUtil.get(key); if (value != null) { try { - return cn.hutool.json.JSONUtil.toBean(value, MpAgentActivityEntity.class); + return cn.hutool.json.JSONUtil.toBean(value, MpActivityEntity.class); } catch (Exception e) { log.error("从缓存获取活动详情失败, id: {}", id, e); } @@ -43,7 +42,7 @@ public class MpAgentActivityCache { /** * 设置活动详情缓存 */ - public void setActivityById(Integer id, MpAgentActivityEntity entity) { + public void setActivityById(Integer id, MpActivityEntity entity) { String key = AGENT_ACTIVITY_PREFIX + id; try { String value = cn.hutool.json.JSONUtil.toJsonStr(entity); @@ -64,12 +63,12 @@ public class MpAgentActivityCache { /** * 获取活动列表缓存 */ - public List getActivityList(String keySuffix) { + public List getActivityList(String keySuffix) { String key = AGENT_ACTIVITY_LIST_PREFIX + keySuffix; String value = redisUtil.get(key); if (value != null) { try { - return cn.hutool.json.JSONUtil.toList(value, MpAgentActivityEntity.class); + return cn.hutool.json.JSONUtil.toList(value, MpActivityEntity.class); } catch (Exception e) { log.error("从缓存获取活动列表失败, key: {}", key, e); } @@ -80,7 +79,7 @@ public class MpAgentActivityCache { /** * 设置活动列表缓存 */ - public void setActivityList(String keySuffix, List entities) { + public void setActivityList(String keySuffix, List entities) { String key = AGENT_ACTIVITY_LIST_PREFIX + keySuffix; try { String value = cn.hutool.json.JSONUtil.toJsonStr(entities); diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityService.java similarity index 70% rename from seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityService.java rename to seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityService.java index 065eaab..d3cef0c 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityService.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityService.java @@ -1,7 +1,7 @@ package com.seer.teach.mp.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.seer.teach.mp.entity.MpAgentActivityEntity; +import com.seer.teach.mp.entity.MpActivityEntity; /** *

@@ -11,7 +11,7 @@ import com.seer.teach.mp.entity.MpAgentActivityEntity; * @author Lingma * @since 2025-12-29 */ -public interface IMpAgentActivityService extends IService { +public interface IMpActivityService extends IService { /** @@ -20,7 +20,7 @@ public interface IMpAgentActivityService extends IService * @param entity 活动实体 * @return 操作是否成功 */ - boolean saveOrUpdateActivity(MpAgentActivityEntity entity); + boolean saveOrUpdateActivity(MpActivityEntity entity); /** * 删除代理商活动 diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityServiceImpl.java similarity index 83% rename from seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityServiceImpl.java rename to seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityServiceImpl.java index b2e7aa7..d7cf544 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityServiceImpl.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityServiceImpl.java @@ -2,25 +2,21 @@ package com.seer.teach.mp.service.impl; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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.seer.teach.common.utils.AssertUtils; import com.seer.teach.mp.cache.MpAgentActivityCache; -import com.seer.teach.mp.entity.MpAgentActivityEntity; -import com.seer.teach.mp.entity.MpAgentActivityLogEntity; +import com.seer.teach.mp.entity.MpActivityEntity; import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; import com.seer.teach.mp.exception.AgentActivityErrorCodeEnum; import com.seer.teach.mp.mapper.MpAgentActivityMapper; import com.seer.teach.mp.service.IMpAgentActivityLogService; -import com.seer.teach.mp.service.IMpAgentActivityService; +import com.seer.teach.mp.service.IMpActivityService; import com.seer.teach.mp.service.IMpAgentActivityParticipantService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.time.LocalDateTime; -import java.util.List; /** *

@@ -33,18 +29,18 @@ import java.util.List; @Slf4j @Service @RequiredArgsConstructor -public class MpAgentActivityServiceImpl extends ServiceImpl implements IMpAgentActivityService { +public class MpActivityServiceImpl extends ServiceImpl implements IMpActivityService { private final IMpAgentActivityParticipantService agentActivityParticipantService; private final MpAgentActivityCache agentActivityCache; private final IMpAgentActivityLogService agentActivityLogService; @Override - public boolean saveOrUpdateActivity(MpAgentActivityEntity entity) { + public boolean saveOrUpdateActivity(MpActivityEntity entity) { // 验证活动数据 validateActivity(entity); - MpAgentActivityEntity oldEntity = null; + MpActivityEntity oldEntity = null; String operationType = "创建"; if (entity.getId() != null) { @@ -83,7 +79,7 @@ public class MpAgentActivityServiceImpl extends ServiceImpl Date: Tue, 30 Dec 2025 11:52:08 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=EF=BC=8C=E6=B4=BB=E5=8A=A8=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E5=91=98=E5=B7=A5=E5=85=B3=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E6=B4=BB=E5=8A=A8=E5=8F=82=E4=B8=8E=E8=80=85=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminAgentActivityLogController.java | 50 ++++++++++ ...minAgentActivityParticipantController.java | 72 ++++++++++++++ .../req/AgentActivityLogQueryReq.java | 44 +++++++++ .../req/AgentActivityParticipantQueryReq.java | 33 +++++++ .../resp/AdminAgentActivityLogResp.java | 47 +++++++++ .../AdminAgentActivityParticipantResp.java | 35 +++++++ ...Convert.java => AdminActivityConvert.java} | 4 +- .../AdminAgentActivityParticipantConvert.java | 18 ++++ .../IAdminAgentActivityLogService.java | 41 ++++++++ ...IAdminAgentActivityParticipantService.java | 57 +++++++++++ .../impl/AdminActivityServiceImpl.java | 8 +- .../AdminAgentActivityLogServiceImpl.java | 97 ++++++++++++++++++ ...inAgentActivityParticipantServiceImpl.java | 99 +++++++++++++++++++ .../V1.0.2__add_agent_activity_tables.sql | 1 - 14 files changed, 599 insertions(+), 7 deletions(-) create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityLogController.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityParticipantController.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityLogQueryReq.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityParticipantQueryReq.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityLogResp.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityParticipantResp.java rename seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/{AdminAgentActivityConvert.java => AdminActivityConvert.java} (82%) create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityParticipantConvert.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityLogService.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityParticipantService.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityLogServiceImpl.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityParticipantServiceImpl.java diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityLogController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityLogController.java new file mode 100644 index 0000000..847a7de --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityLogController.java @@ -0,0 +1,50 @@ +package com.seer.teach.mp.admin.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.annotation.LogPrint; +import com.seer.teach.mp.admin.controller.req.AgentActivityLogQueryReq; +import com.seer.teach.mp.admin.controller.resp.AdminAgentActivityLogResp; +import com.seer.teach.mp.admin.service.IAdminAgentActivityLogService; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@LogPrint +@RequiredArgsConstructor +@RestController +@Tag(name = "管理端 - 代理商活动操作日志") +@RequestMapping("/mp/agent/activity/log") +public class AdminAgentActivityLogController { + + private final IAdminAgentActivityLogService adminAgentActivityLogService; + + @Operation(summary = "代理商活动操作日志列表") + @GetMapping("/page-list") + @SaCheckPermission("mp:admin:agent:activity:log:list") + public ResultBean> pageList(AgentActivityLogQueryReq query) { + return ResultBean.success(adminAgentActivityLogService.pageList(query)); + } + + @Operation(summary = "详情") + @GetMapping("/{id}") + @SaCheckPermission("mp:admin:agent:activity:log:get") + public ResultBean getLog(@PathVariable Integer id) { + return ResultBean.success(adminAgentActivityLogService.getById(id)); + } + + @Operation(summary = "删除") + @DeleteMapping + @SaCheckPermission("mp:admin:agent:activity:log:delete") + public ResultBean delete(@RequestBody List ids) { + boolean result = true; + for (Integer id : ids) { + result &= adminAgentActivityLogService.deleteLog(id); + } + return ResultBean.success(result); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityParticipantController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityParticipantController.java new file mode 100644 index 0000000..7bafbb9 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminAgentActivityParticipantController.java @@ -0,0 +1,72 @@ +package com.seer.teach.mp.admin.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.annotation.LogPrint; +import com.seer.teach.mp.admin.controller.req.AgentActivityParticipantQueryReq; +import com.seer.teach.mp.admin.controller.resp.AdminAgentActivityParticipantResp; +import com.seer.teach.mp.admin.service.IAdminAgentActivityParticipantService; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@LogPrint +@RequiredArgsConstructor +@RestController +@Tag(name = "管理端 - 代理商活动参与记录") +@RequestMapping("/mp/agent/activity/participant") +public class AdminAgentActivityParticipantController { + + private final IAdminAgentActivityParticipantService adminAgentActivityParticipantService; + + @Operation(summary = "代理商活动参与记录列表") + @GetMapping("/page-list") + @SaCheckPermission("mp:admin:agent:activity:participant:list") + public ResultBean> pageList(AgentActivityParticipantQueryReq query) { + return ResultBean.success(adminAgentActivityParticipantService.pageList(query)); + } + + @Operation(summary = "详情") + @GetMapping("/{id}") + @SaCheckPermission("mp:admin:agent:activity:participant:get") + public ResultBean getParticipant(@PathVariable Integer id) { + return ResultBean.success(adminAgentActivityParticipantService.getById(id)); + } + + @Operation(summary = "新增") + @PostMapping + @SaCheckPermission("mp:admin:agent:activity:participant:save") + public ResultBean save(@RequestBody MpAgentActivityParticipantEntity participantEntity) { + return ResultBean.success(adminAgentActivityParticipantService.saveParticipant(participantEntity)); + } + + @Operation(summary = "更新") + @PutMapping + @SaCheckPermission("mp:admin:agent:activity:participant:update") + public ResultBean update(@RequestBody MpAgentActivityParticipantEntity participantEntity) { + return ResultBean.success(adminAgentActivityParticipantService.updateParticipant(participantEntity)); + } + + @Operation(summary = "删除") + @DeleteMapping + @SaCheckPermission("mp:admin:agent:activity:participant:delete") + public ResultBean delete(@RequestBody List ids) { + boolean result = true; + for (Integer id : ids) { + result &= adminAgentActivityParticipantService.deleteParticipant(id); + } + return ResultBean.success(result); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityLogQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityLogQueryReq.java new file mode 100644 index 0000000..a7b78a6 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityLogQueryReq.java @@ -0,0 +1,44 @@ +package com.seer.teach.mp.admin.controller.req; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Min; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 代理商活动操作日志查询请求对象 + * + * @author + * @since 2025-12-30 + */ +@Data +@Schema(name = "代理商活动操作日志查询请求对象") +public class AgentActivityLogQueryReq { + + @Min(value = 1, message = "页码必须大于0") + @Schema(description = "页码") + private Integer pageNum = 1; + + @Min(value = 1, message = "每页数量必须大于0") + @Schema(description = "每页数量") + private Integer pageSize = 10; + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "操作人ID") + private Integer operatorId; + + @Schema(description = "操作类型") + private String operationType; + + @Schema(description = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; + + @Schema(description = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityParticipantQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityParticipantQueryReq.java new file mode 100644 index 0000000..f6cf8f3 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/AgentActivityParticipantQueryReq.java @@ -0,0 +1,33 @@ +package com.seer.teach.mp.admin.controller.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Min; +import lombok.Data; + +/** + * 代理商活动参与记录查询请求对象 + * + * @author + * @since 2025-12-30 + */ +@Data +@Schema(name = "代理商活动参与记录查询请求对象") +public class AgentActivityParticipantQueryReq { + + @Min(value = 1, message = "页码必须大于0") + @Schema(description = "页码") + private Integer pageNum = 1; + + @Min(value = 1, message = "每页数量必须大于0") + @Schema(description = "每页数量") + private Integer pageSize = 10; + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "家长ID") + private Integer parentId; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityLogResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityLogResp.java new file mode 100644 index 0000000..a91b759 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityLogResp.java @@ -0,0 +1,47 @@ +package com.seer.teach.mp.admin.controller.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 代理商活动操作日志响应对象 + * + * @author + * @since 2025-12-30 + */ +@Data +@Schema(name = "代理商活动操作日志响应对象") +public class AdminAgentActivityLogResp { + + @Schema(description = "日志ID") + private Integer id; + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "操作人ID") + private Integer operatorId; + + @Schema(description = "操作类型") + private String operationType; + + @Schema(description = "操作描述") + private String description; + + @Schema(description = "操作前数据") + private String beforeData; + + @Schema(description = "操作后数据") + private String afterData; + + @Schema(description = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityParticipantResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityParticipantResp.java new file mode 100644 index 0000000..2c359a9 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityParticipantResp.java @@ -0,0 +1,35 @@ +package com.seer.teach.mp.admin.controller.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 代理商活动参与记录响应对象 + * + * @author + * @since 2025-12-30 + */ +@Data +@Schema(name = "代理商活动参与记录响应对象") +public class AdminAgentActivityParticipantResp { + + @Schema(description = "参与记录ID") + private Integer id; + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityConvert.java similarity index 82% rename from seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java rename to seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityConvert.java index 1e911a1..7fec4fa 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityConvert.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityConvert.java @@ -10,9 +10,9 @@ import org.mapstruct.factory.Mappers; import java.util.List; @Mapper -public interface AdminAgentActivityConvert { +public interface AdminActivityConvert { - AdminAgentActivityConvert INSTANCE = Mappers.getMapper(AdminAgentActivityConvert.class); + AdminActivityConvert INSTANCE = Mappers.getMapper(AdminActivityConvert.class); MpActivityEntity convert(MpActivityReq req); diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityParticipantConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityParticipantConvert.java new file mode 100644 index 0000000..d2f86ba --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminAgentActivityParticipantConvert.java @@ -0,0 +1,18 @@ +package com.seer.teach.mp.admin.convert; + +import com.seer.teach.mp.admin.controller.resp.AdminAgentActivityParticipantResp; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface AdminAgentActivityParticipantConvert { + + AdminAgentActivityParticipantConvert INSTANCE = Mappers.getMapper(AdminAgentActivityParticipantConvert.class); + + AdminAgentActivityParticipantResp convertToResp(MpAgentActivityParticipantEntity entity); + + List convertToRespList(List entity); +} diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityLogService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityLogService.java new file mode 100644 index 0000000..d882e1e --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityLogService.java @@ -0,0 +1,41 @@ +package com.seer.teach.mp.admin.service; + +import com.seer.teach.common.PageListBean; +import com.seer.teach.mp.admin.controller.req.AgentActivityLogQueryReq; +import com.seer.teach.mp.admin.controller.resp.AdminAgentActivityLogResp; +import com.seer.teach.mp.entity.MpAgentActivityLogEntity; + +/** + *

+ * 代理商活动操作日志表 管理端服务类 + *

+ * + * @author + * @since 2025-12-30 + */ +public interface IAdminAgentActivityLogService { + + /** + * 分页查询代理商活动操作日志列表(管理端) + * + * @param query 查询条件 + * @return 代理商活动操作日志分页列表 + */ + PageListBean pageList(AgentActivityLogQueryReq query); + + /** + * 根据ID获取代理商活动操作日志详情(管理端) + * + * @param id 日志ID + * @return 操作日志详情 + */ + AdminAgentActivityLogResp getById(Integer id); + + /** + * 根据ID删除代理商活动操作日志(管理端) + * + * @param id 日志ID + * @return 操作是否成功 + */ + boolean deleteLog(Integer id); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityParticipantService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityParticipantService.java new file mode 100644 index 0000000..414076c --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminAgentActivityParticipantService.java @@ -0,0 +1,57 @@ +package com.seer.teach.mp.admin.service; + +import com.seer.teach.common.PageListBean; +import com.seer.teach.mp.admin.controller.req.AgentActivityParticipantQueryReq; +import com.seer.teach.mp.admin.controller.resp.AdminAgentActivityParticipantResp; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; + +/** + *

+ * 代理商活动参与记录表 管理端服务类 + *

+ * + * @author + * @since 2025-12-30 + */ +public interface IAdminAgentActivityParticipantService { + + /** + * 分页查询代理商活动参与记录列表(管理端) + * + * @param query 查询条件 + * @return 代理商活动参与记录分页列表 + */ + PageListBean pageList(AgentActivityParticipantQueryReq query); + + /** + * 创建代理商活动参与记录(管理端) + * + * @param entity 参与记录实体 + * @return 操作是否成功 + */ + boolean saveParticipant(MpAgentActivityParticipantEntity entity); + + /** + * 更新代理商活动参与记录(管理端) + * + * @param entity 参与记录实体 + * @return 操作是否成功 + */ + boolean updateParticipant(MpAgentActivityParticipantEntity entity); + + /** + * 根据ID删除代理商活动参与记录(管理端) + * + * @param id 参与记录ID + * @return 操作是否成功 + */ + boolean deleteParticipant(Integer id); + + /** + * 根据ID获取代理商活动参与记录详情(管理端) + * + * @param id 参与记录ID + * @return 参与记录详情 + */ + AdminAgentActivityParticipantResp getById(Integer id); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityServiceImpl.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityServiceImpl.java index 5faad37..2fd4442 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityServiceImpl.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityServiceImpl.java @@ -8,7 +8,7 @@ import com.seer.teach.mp.admin.controller.req.MpActivityQueryReq; import com.seer.teach.mp.admin.controller.req.MpActivityReq; import com.seer.teach.mp.admin.controller.resp.AdminActivityResp; import com.seer.teach.mp.admin.service.IAdminActivityService; -import com.seer.teach.mp.admin.convert.AdminAgentActivityConvert; +import com.seer.teach.mp.admin.convert.AdminActivityConvert; import com.seer.teach.mp.entity.MpActivityEntity; import com.seer.teach.mp.service.IMpActivityService; import lombok.RequiredArgsConstructor; @@ -37,12 +37,12 @@ public class AdminActivityServiceImpl implements IAdminActivityService { var pageResult = agentActivityService.page(page, new LambdaQueryWrapper<>(MpActivityEntity.class) .like(StringUtils.isNotBlank(query.getActivityName()), MpActivityEntity::getActivityName, query.getActivityName()) .eq(Objects.nonNull(query.getStatus()), MpActivityEntity::getStatus, query.getStatus())); - return PageConverterUtils.convertPageListBean(pageResult, AdminAgentActivityConvert.INSTANCE::convertToRespList); + return PageConverterUtils.convertPageListBean(pageResult, AdminActivityConvert.INSTANCE::convertToRespList); } @Override public boolean saveOrUpdateActivity(MpActivityReq request) { - MpActivityEntity entity = AdminAgentActivityConvert.INSTANCE.convert(request); + MpActivityEntity entity = AdminActivityConvert.INSTANCE.convert(request); return agentActivityService.saveOrUpdateActivity(entity); } @@ -54,6 +54,6 @@ public class AdminActivityServiceImpl implements IAdminActivityService { @Override public AdminActivityResp getById(Integer id) { MpActivityEntity entity = agentActivityService.getById(id); - return AdminAgentActivityConvert.INSTANCE.convertToResp(entity); + return AdminActivityConvert.INSTANCE.convertToResp(entity); } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityLogServiceImpl.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityLogServiceImpl.java new file mode 100644 index 0000000..287829f --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityLogServiceImpl.java @@ -0,0 +1,97 @@ +package com.seer.teach.mp.admin.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.seer.teach.common.PageListBean; +import com.seer.teach.mp.admin.controller.req.AgentActivityLogQueryReq; +import com.seer.teach.mp.admin.controller.resp.AdminAgentActivityLogResp; +import com.seer.teach.mp.admin.service.IAdminAgentActivityLogService; +import com.seer.teach.mp.entity.MpAgentActivityLogEntity; +import com.seer.teach.mp.service.IMpAgentActivityLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 代理商活动操作日志表 管理端服务实现类 + *

+ * + * @author + * @since 2025-12-30 + */ +@Service +@RequiredArgsConstructor +public class AdminAgentActivityLogServiceImpl implements IAdminAgentActivityLogService { + + private final IMpAgentActivityLogService mpAgentActivityLogService; + + @Override + public PageListBean pageList(AgentActivityLogQueryReq query) { + Page page = new Page<>(query.getPageNum(), query.getPageSize()); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + // 根据活动ID查询 + if (query.getActivityId() != null) { + wrapper.eq(MpAgentActivityLogEntity::getActivityId, query.getActivityId()); + } + + // 根据操作人ID查询 + if (query.getOperatorId() != null) { + wrapper.eq(MpAgentActivityLogEntity::getOperatorId, query.getOperatorId()); + } + + // 根据操作类型查询 + if (query.getOperationType() != null && !query.getOperationType().isEmpty()) { + wrapper.eq(MpAgentActivityLogEntity::getOperationType, query.getOperationType()); + } + + // 根据创建时间范围查询 + if (query.getStartTime() != null) { + wrapper.ge(MpAgentActivityLogEntity::getCreateTime, query.getStartTime()); + } + if (query.getEndTime() != null) { + wrapper.le(MpAgentActivityLogEntity::getCreateTime, query.getEndTime()); + } + + IPage result = mpAgentActivityLogService.page(page, wrapper); + + // 转换为响应对象 + List records = result.getRecords().stream() + .map(this::convertToResp) + .toList(); + + return new PageListBean<>(result.getTotal(), records); + } + + @Override + public AdminAgentActivityLogResp getById(Integer id) { + MpAgentActivityLogEntity entity = mpAgentActivityLogService.getById(id); + return convertToResp(entity); + } + + @Override + public boolean deleteLog(Integer id) { + return mpAgentActivityLogService.removeById(id); + } + + /** + * 将实体转换为响应对象 + */ + private AdminAgentActivityLogResp convertToResp(MpAgentActivityLogEntity entity) { + AdminAgentActivityLogResp resp = new AdminAgentActivityLogResp(); + resp.setId(entity.getId()); + resp.setActivityId(entity.getActivityId()); + resp.setOperatorId(entity.getOperatorId()); + resp.setOperationType(entity.getOperationType()); + resp.setDescription(entity.getDescription()); + resp.setBeforeData(entity.getBeforeData()); + resp.setAfterData(entity.getAfterData()); + resp.setCreateTime(entity.getCreateTime()); + resp.setUpdateTime(entity.getUpdateTime()); + return resp; + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityParticipantServiceImpl.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityParticipantServiceImpl.java new file mode 100644 index 0000000..a583ad5 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityParticipantServiceImpl.java @@ -0,0 +1,99 @@ +package com.seer.teach.mp.admin.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.utils.PageConverterUtils; +import com.seer.teach.mp.admin.controller.req.AgentActivityParticipantQueryReq; +import com.seer.teach.mp.admin.controller.resp.AdminAgentActivityParticipantResp; +import com.seer.teach.mp.admin.convert.AdminAgentActivityParticipantConvert; +import com.seer.teach.mp.admin.service.IAdminAgentActivityParticipantService; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import com.seer.teach.mp.mapper.MpAgentActivityParticipantMapper; +import com.seer.teach.mp.service.IMpAgentActivityParticipantService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.List; + +/** + *

+ * 代理商活动参与记录表 管理端服务实现类 + *

+ * + * @author + * @since 2025-12-30 + */ +@Service +@RequiredArgsConstructor +public class AdminAgentActivityParticipantServiceImpl implements IAdminAgentActivityParticipantService { + + private final IMpAgentActivityParticipantService mpAgentActivityParticipantService; + + @Override + public PageListBean pageList(AgentActivityParticipantQueryReq query) { + Page page = new Page<>(query.getPageNum(), query.getPageSize()); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + // 根据活动ID查询 + if (query.getActivityId() != null) { + wrapper.eq(MpAgentActivityParticipantEntity::getActivityId, query.getActivityId()); + } + + // 根据代理商ID查询 + if (query.getAgentId() != null) { + wrapper.eq(MpAgentActivityParticipantEntity::getAgentId, query.getAgentId()); + } + IPage result = mpAgentActivityParticipantService.page(page, wrapper); + + return PageConverterUtils.convertPageListBean(result, AdminAgentActivityParticipantConvert.INSTANCE::convertToRespList); + } + + @Override + public boolean saveParticipant(MpAgentActivityParticipantEntity entity) { + // 检查是否已存在相同的活动、代理商和家长记录 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MpAgentActivityParticipantEntity::getActivityId, entity.getActivityId()) + .eq(MpAgentActivityParticipantEntity::getAgentId, entity.getAgentId()) + .eq(MpAgentActivityParticipantEntity::getParentId, entity.getParentId()); + + long count = mpAgentActivityParticipantService.count(wrapper); + if (count > 0) { + throw new RuntimeException("该代理商活动参与记录已存在"); + } + + return mpAgentActivityParticipantService.save(entity); + } + + @Override + public boolean updateParticipant(MpAgentActivityParticipantEntity entity) { + // 检查是否存在相同的活动、代理商和家长记录(排除当前记录) + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MpAgentActivityParticipantEntity::getActivityId, entity.getActivityId()) + .eq(MpAgentActivityParticipantEntity::getAgentId, entity.getAgentId()) + .eq(MpAgentActivityParticipantEntity::getParentId, entity.getParentId()) + .ne(MpAgentActivityParticipantEntity::getId, entity.getId()); + + long count = mpAgentActivityParticipantService.count(wrapper); + if (count > 0) { + throw new RuntimeException("该代理商活动参与记录已存在"); + } + + return mpAgentActivityParticipantService.updateById(entity); + } + + @Override + public boolean deleteParticipant(Integer id) { + return mpAgentActivityParticipantService.removeById(id); + } + + @Override + public AdminAgentActivityParticipantResp getById(Integer id) { + MpAgentActivityParticipantEntity entity = mpAgentActivityParticipantService.getById(id); + return AdminAgentActivityParticipantConvert.INSTANCE.convertToResp(entity); + } + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql b/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql index 4bf6cbb..60c7c3f 100644 --- a/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql +++ b/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql @@ -59,7 +59,6 @@ CREATE TABLE `mp_agent_activity_participants` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '参与记录ID', `activity_id` int NOT NULL COMMENT '活动ID', `agent_id` int NOT NULL COMMENT '代理商ID', - `parent_id` int NOT NULL COMMENT '家长ID(对应user表的ID)', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '创建人', `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', From 8db570e1adb895c3553f176db68ea851218adae0 Mon Sep 17 00:00:00 2001 From: Wang Date: Tue, 30 Dec 2025 16:37:21 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=EF=BC=8C=E6=B4=BB=E5=8A=A8=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E5=91=98=E5=B7=A5=E5=85=B3=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E6=B4=BB=E5=8A=A8=E5=8F=82=E4=B8=8E=E8=80=85=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teach/common/enums/ResultCodeEnum.java | 18 ++- .../MpActivityInfoCollectionEntity.java | 113 +++++++++++++ .../MpParentAgentActivityRelationEntity.java | 68 ++++++++ .../MpActivityInfoCollectionMapper.java | 18 +++ .../MpParentAgentActivityRelationMapper.java | 18 +++ .../AdminParentAgentActivityController.java | 48 ++++++ .../req/ParentAgentActivityQueryReq.java | 51 ++++++ .../resp/AdminParentAgentActivityResp.java | 45 ++++++ .../resp/MpParentAgentActivityResp.java | 40 +++++ .../AdminParentAgentActivityConvert.java | 18 +++ .../AdminParentAgentActivityService.java | 50 ++++++ .../V1.0.2__add_agent_activity_tables.sql | 53 +++++- .../AppAgentActivityController.java | 8 +- .../AppParentAgentActivityController.java | 63 ++++++++ .../req/AppMpSignUpActivityReq.java | 49 ++++++ .../resp/AppMpSignUpActivityResp.java | 53 ++++++ .../AppMpActivityInfoCollectionConvert.java | 18 +++ .../AppParentAgentActivityService.java | 136 ++++++++++++++++ .../app/service/IAppAgentActivityService.java | 3 +- .../impl/AppAgentActivityServiceImpl.java | 8 +- .../mp/api/impl/MpAgentServiceApiImpl.java | 36 ----- .../teach/mp/cache/MpAgentActivityCache.java | 107 ------------ .../exception/AgentActivityErrorCodeEnum.java | 25 --- .../mp/exception/AgentActivityException.java | 24 --- .../mp/exception/AgentErrorCodeEnum.java | 32 ---- .../teach/mp/exception/AgentException.java | 26 --- .../IMpActivityInfoCollectionService.java | 23 +++ .../IMpAgentActivityParticipantService.java | 22 +-- .../teach/mp/service/IMpAgentService.java | 42 ----- ...IMpParentAgentActivityRelationService.java | 33 ++++ .../MpActivityInfoCollectionServiceImpl.java | 31 ++++ ...MpAgentActivityParticipantServiceImpl.java | 79 +-------- .../mp/service/impl/MpAgentServiceImpl.java | 153 ------------------ ...arentAgentActivityRelationServiceImpl.java | 41 +++++ 34 files changed, 999 insertions(+), 553 deletions(-) create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpActivityInfoCollectionEntity.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpParentAgentActivityRelationEntity.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpActivityInfoCollectionMapper.java create mode 100644 seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpParentAgentActivityRelationMapper.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminParentAgentActivityController.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/ParentAgentActivityQueryReq.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminParentAgentActivityResp.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpParentAgentActivityResp.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminParentAgentActivityConvert.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminParentAgentActivityService.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppParentAgentActivityController.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppMpSignUpActivityReq.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppMpSignUpActivityResp.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppMpActivityInfoCollectionConvert.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/AppParentAgentActivityService.java delete mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/api/impl/MpAgentServiceApiImpl.java delete mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java delete mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityErrorCodeEnum.java delete mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityException.java delete mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentErrorCodeEnum.java delete mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentException.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityInfoCollectionService.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpParentAgentActivityRelationService.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityInfoCollectionServiceImpl.java create mode 100644 seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpParentAgentActivityRelationServiceImpl.java diff --git a/seer-common/common-enums/src/main/java/com/seer/teach/common/enums/ResultCodeEnum.java b/seer-common/common-enums/src/main/java/com/seer/teach/common/enums/ResultCodeEnum.java index d4444a2..aaedb35 100644 --- a/seer-common/common-enums/src/main/java/com/seer/teach/common/enums/ResultCodeEnum.java +++ b/seer-common/common-enums/src/main/java/com/seer/teach/common/enums/ResultCodeEnum.java @@ -319,7 +319,23 @@ public enum ResultCodeEnum { RICH_TEXT_TEMPLATE_CONVERT_FAILED(1100419, "转换失败"), - AI_MODEL_NOT_FOUND(12000, "未找到模型"); + AI_MODEL_NOT_FOUND(12000, "未找到模型"), + + PARENT_ALREADY_SIGNED_UP(13000, "家长已报名参加该活动"), + RELATION_NOT_FOUND(13001, "关系记录不存在"), + PARENT_NOT_SIGNED_UP(13002, "家长未报名参加该活动"), + INVALID_ACTIVITY(13003, "活动不存在或已失效"), + INVALID_AGENT(13004, "代理商不存在或已失效"), + AGENT_STATUS_INVALID(13005, "代理商状态无效"), + AGENT_NON_PARTICIPANT_ACTIVE(130061, "代理商没有参与该活动"), + AGENT_CONTACT_INFO_INVALID(13006, "联系信息无效"), + ACTIVITY_NOT_FOUND(13007, "活动不存在"), + ACTIVITY_ALREADY_EXISTS(13008, "活动已存在"), + ACTIVITY_NOT_ACTIVE(13009, "活动未开始或已结束"), + PARTICIPATION_FAILED(13010, "参与活动失败"), + PARENT_NOT_FOUND(13011, "家长不存在"), + INVALID_ACTIVITY_STATUS(13012, "无效的活动状态"), + PARENT_ALREADY_SIGN_UP(130121, "已经报名参加该活动"); private int code; private String msg; diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpActivityInfoCollectionEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpActivityInfoCollectionEntity.java new file mode 100644 index 0000000..3339512 --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpActivityInfoCollectionEntity.java @@ -0,0 +1,113 @@ +package com.seer.teach.mp.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.seer.teach.common.config.mybatis.hanler.IntegerListTypeHandler; +import com.seer.teach.common.entity.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +/** + *

+ * 活动信息收集表 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Getter +@Setter +@TableName("mp_activity_info_collection") +@Schema(name = "MpActivityInfoCollectionEntity对象", description = "活动信息收集表") +public class MpActivityInfoCollectionEntity extends BaseEntity { + + /** + * 关联的家长参与代理商活动关系ID + */ + @TableField("relation_id") + private Integer relationId; + + /** + * 活动ID + */ + @TableField("activity_id") + private Integer activityId; + + /** + * 代理商ID + */ + @TableField("agent_id") + private Integer agentId; + + /** + * 家长ID + */ + @TableField("parent_id") + private Integer parentId; + + /** + * 孩子姓名 + */ + @TableField("child_name") + private String childName; + + /** + * 孩子性别(M-男,F-女) + */ + @TableField("child_gender") + private String childGender; + + /** + * 出生年月 + */ + @TableField("child_birth_date") + private LocalDate childBirthDate; + + /** + * 年级 + */ + @TableField("grade") + private String grade; + + /** + * 学校 + */ + @TableField("school") + private String school; + + /** + * 地区 + */ + @TableField("region") + private String region; + + /** + * 家长身份(爸爸,妈妈) + */ + @TableField("parent_identity") + private String parentIdentity; + + /** + * 学习情况(优、良、中、差) + */ + @TableField("learning_situation") + private String learningSituation; + + /** + * 优势学科(数学、英语等) + */ + @TableField(value = "strong_subject_ids",typeHandler = IntegerListTypeHandler.class) + private List strongSubjectIds; + + /** + * 劣势学科(数学、英语等) + */ + @TableField(value = "weak_subject_ids",typeHandler = IntegerListTypeHandler.class) + private List weakSubjectIds; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpParentAgentActivityRelationEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpParentAgentActivityRelationEntity.java new file mode 100644 index 0000000..e477fcd --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpParentAgentActivityRelationEntity.java @@ -0,0 +1,68 @@ +package com.seer.teach.mp.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.seer.teach.common.entity.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +/** + *

+ * 家长参与代理商活动关系表 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Getter +@Setter +@TableName("mp_parent_agent_activity_relations") +@Schema(name = "MpParentAgentActivityRelationEntity对象", description = "家长参与代理商活动关系表") +public class MpParentAgentActivityRelationEntity extends BaseEntity { + + /** + * 活动ID + */ + @TableField("activity_id") + private Integer activityId; + + /** + * 代理商ID + */ + @TableField("agent_id") + private Integer agentId; + + /** + * 家长ID + */ + @TableField("parent_id") + private Integer parentId; + + /** + * 活动名称(冗余字段) + */ + @TableField("activity_name") + private String activityName; + + /** + * 代理商名称(冗余字段) + */ + @TableField("agent_name") + private String agentName; + + /** + * 参与状态:0-取消参与,1-正常参与 + */ + @TableField("status") + private Integer status; + + /** + * 报名时间 + */ + @TableField("sign_up_time") + private LocalDateTime signUpTime; + +} diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpActivityInfoCollectionMapper.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpActivityInfoCollectionMapper.java new file mode 100644 index 0000000..21ac3dd --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpActivityInfoCollectionMapper.java @@ -0,0 +1,18 @@ +package com.seer.teach.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.seer.teach.mp.entity.MpActivityInfoCollectionEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 活动信息收集表 Mapper 接口 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Mapper +public interface MpActivityInfoCollectionMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpParentAgentActivityRelationMapper.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpParentAgentActivityRelationMapper.java new file mode 100644 index 0000000..9d3b2f1 --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/mapper/MpParentAgentActivityRelationMapper.java @@ -0,0 +1,18 @@ +package com.seer.teach.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.seer.teach.mp.entity.MpParentAgentActivityRelationEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 家长参与代理商活动关系表 Mapper 接口 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Mapper +public interface MpParentAgentActivityRelationMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminParentAgentActivityController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminParentAgentActivityController.java new file mode 100644 index 0000000..83205dd --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminParentAgentActivityController.java @@ -0,0 +1,48 @@ +package com.seer.teach.mp.admin.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.annotation.LogPrint; +import com.seer.teach.common.utils.PageConverterUtils; +import com.seer.teach.mp.admin.controller.req.ParentAgentActivityQueryReq; +import com.seer.teach.mp.admin.controller.resp.AdminParentAgentActivityResp; +import com.seer.teach.mp.admin.controller.resp.MpParentAgentActivityResp; +import com.seer.teach.mp.admin.service.AdminParentAgentActivityService; +import com.seer.teach.mp.entity.MpParentAgentActivityRelationEntity; +import com.seer.teach.mp.service.IMpParentAgentActivityRelationService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + * 家长参与代理商活动控制器 - 管理端 + */ +@Tag(name = "管理端 - 家长参与代理商活动管理") +@AllArgsConstructor +@RestController +@RequestMapping("/mp/admin/parent/agent/activity") +public class AdminParentAgentActivityController { + + private final AdminParentAgentActivityService adminParentAgentActivityService; + + @PostMapping("/page") + @SaCheckPermission("admin:parent:agent:activity:page") + @Operation(summary = "分页查询家长参与代理商活动记录") + @LogPrint + public ResultBean> pageList( + @RequestBody ParentAgentActivityQueryReq queryReq) { + return ResultBean.success(adminParentAgentActivityService.pageList(queryReq)); + } + + @GetMapping("/{id}") + @SaCheckPermission("admin:parent:agent:activity:detail") + @Operation(summary = "获取家长参与代理商活动记录详情") + @LogPrint + public ResultBean detail(@PathVariable Integer id) { + return ResultBean.success(adminParentAgentActivityService.getDetail(id)); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/ParentAgentActivityQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/ParentAgentActivityQueryReq.java new file mode 100644 index 0000000..4903a19 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/ParentAgentActivityQueryReq.java @@ -0,0 +1,51 @@ +package com.seer.teach.mp.admin.controller.req; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.seer.teach.common.request.PageRequest; +import com.seer.teach.mp.entity.MpParentAgentActivityRelationEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 家长参与代理商活动查询请求类 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Schema(description = "家长参与代理商活动查询请求") +public class ParentAgentActivityQueryReq extends PageRequest { + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "家长ID") + private Integer parentId; + + @Schema(description = "活动名称") + private String activityName; + + @Schema(description = "代理商名称") + private String agentName; + + @Schema(description = "参与状态:0-取消参与,1-正常参与") + private Integer status; + + /** + * 转换为查询条件 + * @return 查询条件 + */ + public LambdaQueryWrapper toQueryWrapper() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(activityId != null, MpParentAgentActivityRelationEntity::getActivityId, activityId) + .eq(agentId != null, MpParentAgentActivityRelationEntity::getAgentId, agentId) + .eq(parentId != null, MpParentAgentActivityRelationEntity::getParentId, parentId) + .like(activityName != null && !activityName.isEmpty(), MpParentAgentActivityRelationEntity::getActivityName, activityName) + .like(agentName != null && !agentName.isEmpty(), MpParentAgentActivityRelationEntity::getAgentName, agentName) + .eq(status != null, MpParentAgentActivityRelationEntity::getStatus, status) + .orderByDesc(MpParentAgentActivityRelationEntity::getSignUpTime); // 按报名时间倒序排列 + return wrapper; + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminParentAgentActivityResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminParentAgentActivityResp.java new file mode 100644 index 0000000..0a7b152 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminParentAgentActivityResp.java @@ -0,0 +1,45 @@ +package com.seer.teach.mp.admin.controller.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 管理端家长参与代理商活动响应类 + */ +@Data +@Schema(description = "管理端家长参与代理商活动响应") +public class AdminParentAgentActivityResp { + + @Schema(description = "关系ID") + private Integer id; + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "活动名称") + private String activityName; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "代理商名称") + private String agentName; + + @Schema(description = "家长ID") + private Integer parentId; + + @Schema(description = "参与状态:0-取消参与,1-正常参与") + private Integer status; + + @Schema(description = "报名时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime signUpTime; + + @Schema(description = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpParentAgentActivityResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpParentAgentActivityResp.java new file mode 100644 index 0000000..2246665 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/MpParentAgentActivityResp.java @@ -0,0 +1,40 @@ +package com.seer.teach.mp.admin.controller.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 家长参与代理商活动Resp + */ +@Data +@Schema(description = "家长参与代理商活动Resp") +public class MpParentAgentActivityResp { + + @Schema(description = "关系ID") + private Integer id; + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "活动名称") + private String activityName; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "代理商名称") + private String agentName; + + @Schema(description = "家长ID") + private Integer parentId; + + @Schema(description = "参与状态:0-取消参与,1-正常参与") + private Integer status; + + @Schema(description = "报名时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime signUpTime; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminParentAgentActivityConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminParentAgentActivityConvert.java new file mode 100644 index 0000000..ff236ad --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminParentAgentActivityConvert.java @@ -0,0 +1,18 @@ +package com.seer.teach.mp.admin.convert; + +import com.seer.teach.mp.admin.controller.resp.AdminParentAgentActivityResp; +import com.seer.teach.mp.entity.MpParentAgentActivityRelationEntity; +import org.apache.ibatis.annotations.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface AdminParentAgentActivityConvert { + + AdminParentAgentActivityConvert INSTANCE = Mappers.getMapper(AdminParentAgentActivityConvert.class); + + AdminParentAgentActivityResp convertToResp(MpParentAgentActivityRelationEntity entity); + + List convertToRespList(List entityList); +} diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminParentAgentActivityService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminParentAgentActivityService.java new file mode 100644 index 0000000..175e5c5 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminParentAgentActivityService.java @@ -0,0 +1,50 @@ +package com.seer.teach.mp.admin.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.seer.teach.common.PageListBean; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.utils.PageConverterUtils; +import com.seer.teach.mp.admin.controller.req.ParentAgentActivityQueryReq; +import com.seer.teach.mp.admin.controller.resp.AdminParentAgentActivityResp; +import com.seer.teach.mp.admin.controller.resp.MpParentAgentActivityResp; +import com.seer.teach.mp.admin.convert.AdminParentAgentActivityConvert; +import com.seer.teach.mp.entity.MpParentAgentActivityRelationEntity; +import com.seer.teach.mp.service.IMpParentAgentActivityRelationService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +@RequiredArgsConstructor +@Service +@Slf4j +public class AdminParentAgentActivityService { + + private final IMpParentAgentActivityRelationService parentAgentActivityRelationService; + + public PageListBean pageList(ParentAgentActivityQueryReq query) { + + IPage pageParam = new Page<>(query.getPageNo(),query.getPageSize()); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Objects.nonNull(query.getActivityId()), MpParentAgentActivityRelationEntity::getActivityId, query.getActivityId()) + .eq(Objects.nonNull(query.getAgentId()), MpParentAgentActivityRelationEntity::getAgentId, query.getAgentId()) + .eq(Objects.nonNull(query.getAgentId()), MpParentAgentActivityRelationEntity::getParentId, query.getAgentId()) + .like(Objects.nonNull(query.getActivityName()) && !query.getActivityName().isEmpty(), MpParentAgentActivityRelationEntity::getActivityName, query.getActivityName()) + .like(Objects.nonNull(query.getAgentName()) && !query.getAgentName().isEmpty(), MpParentAgentActivityRelationEntity::getAgentName, query.getAgentName()) + .eq(Objects.nonNull(query.getStatus()), MpParentAgentActivityRelationEntity::getStatus, query.getStatus()) + .orderByDesc(MpParentAgentActivityRelationEntity::getSignUpTime); + + IPage pageResult = parentAgentActivityRelationService.page(pageParam, wrapper); + + return PageConverterUtils.convertPageListBean(pageResult, AdminParentAgentActivityConvert.INSTANCE::convertToRespList); + } + + public AdminParentAgentActivityResp getDetail(Integer id) { + MpParentAgentActivityRelationEntity entity = parentAgentActivityRelationService.getById(id); + return AdminParentAgentActivityConvert.INSTANCE.convertToResp(entity); + } +} diff --git a/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql b/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql index 60c7c3f..43e468a 100644 --- a/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql +++ b/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql @@ -89,4 +89,55 @@ CREATE TABLE `mp_agent_activity_log` ( KEY `idx_activity_id` (`activity_id`), KEY `idx_operator_id` (`operator_id`), KEY `idx_create_time` (`create_time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商活动操作日志表'; \ No newline at end of file +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商活动操作日志表'; + + +CREATE TABLE `mp_parent_agent_activity_relation` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '关系ID', + `activity_id` int NOT NULL COMMENT '活动ID', + `agent_id` int NOT NULL COMMENT '代理商ID', + `parent_id` int NOT NULL COMMENT '家长ID', + `activity_name` varchar(255) NOT NULL COMMENT '活动名称(冗余字段)', + `agent_name` varchar(255) NOT NULL COMMENT '代理商名称(冗余字段)', + `status` tinyint NOT NULL DEFAULT '1' COMMENT '参与状态:0-取消参与,1-正常参与', + `sign_up_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '报名时间', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '创建人', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '修改人', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` varchar(20) DEFAULT 'Default' COMMENT '租户id', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_activity_id` (`activity_id`), + KEY `idx_agent_id` (`agent_id`), + KEY `idx_parent_id` (`parent_id`), + KEY `idx_sign_up_time` (`sign_up_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='家长参与代理商活动关系表'; + + +CREATE TABLE `mp_activity_info_collection` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '信息收集ID', + `relation_id` int NOT NULL COMMENT '关系ID', + `activity_id` int NOT NULL COMMENT '活动ID', + `parent_id` int NOT NULL COMMENT '家长ID', + `relation_id` int COMMENT '关联的家长参与代理商活动关系ID', + `child_name` varchar(100) COMMENT '孩子姓名', + `child_gender` varchar(10) COMMENT '孩子性别(M-男,F-女)', + `child_birth_date` date COMMENT '出生年月', + `grade` varchar(20) COMMENT '年级', + `school` varchar(255) COMMENT '学校', + `region` varchar(255) COMMENT '地区', + `parent_identity` varchar(20) COMMENT '家长身份(爸爸,妈妈)', + `learning_situation` varchar(20) COMMENT '学习情况(优、良、中、差)', + `weak_subject` varchar(50) COMMENT '偏科(数学、英语等)', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '创建人', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '修改人', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` varchar(20) DEFAULT 'Default' COMMENT '租户id', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_activity_id` (`activity_id`), + KEY `idx_parent_id` (`parent_id`), + KEY `idx_relation_id` (`relation_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动信息收集表'; \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java index 1b7a910..e417baf 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java @@ -1,6 +1,7 @@ package com.seer.teach.mp.app.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; import com.seer.teach.common.PageListBean; import com.seer.teach.common.ResultBean; import com.seer.teach.common.annotation.DecryptionAnnotation; @@ -37,13 +38,14 @@ public class AppAgentActivityController { @GetMapping("/page-list") @SaCheckPermission("mp:app:agent:activity:list") public ResultBean> pageList(AppAgentActivityQueryReq query) { - return ResultBean.success(agentActivityService.pageList(query)); + Integer agentId = StpUtil.getLoginIdAsInt(); + return ResultBean.success(agentActivityService.pageList(query,agentId)); } @Operation(summary = "查看活动详情") @GetMapping("/{id}") - @SaCheckPermission("mp:app:agent:activity:get") - public ResultBean get(@PathVariable Integer id) { + @SaCheckPermission("mp:app:agent:activity:detail") + public ResultBean getDetail(@PathVariable Integer id) { return ResultBean.success(agentActivityService.getById(id)); } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppParentAgentActivityController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppParentAgentActivityController.java new file mode 100644 index 0000000..0eabe28 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppParentAgentActivityController.java @@ -0,0 +1,63 @@ +package com.seer.teach.mp.app.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.stp.StpUtil; +import com.seer.teach.common.ResultBean; +import com.seer.teach.mp.app.controller.resp.AppMpSignUpActivityResp; +import com.seer.teach.mp.app.service.AppParentAgentActivityService; +import com.seer.teach.mp.app.controller.req.AppMpSignUpActivityReq; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * 家长参与代理商活动控制器 - 应用端 + */ +@Tag(name = "应用端 - 家长参与代理商活动管理") +@AllArgsConstructor +@RestController +@RequestMapping("/app/parent/agent/activity") +public class AppParentAgentActivityController { + + private final AppParentAgentActivityService appParentAgentActivityService; + + @PostMapping("/sign-up") + @SaCheckLogin + @Operation(summary = "家长报名参加代理商活动") + public ResultBean signUpForActivity(@RequestBody AppMpSignUpActivityReq request) { + Integer parentId = StpUtil.getLoginIdAsInt(); + return ResultBean.success(appParentAgentActivityService.signUpForActivityWithInfo(request, parentId)); + } + + @PostMapping("/update-info") + @SaCheckLogin + @Operation(summary = "家长更新活动信息") + public ResultBean updateActivityInfo(@RequestBody AppMpSignUpActivityReq request) { + Integer parentId = StpUtil.getLoginIdAsInt(); + return ResultBean.success(appParentAgentActivityService.updateActivityInfo(request, parentId)); + } + + @DeleteMapping("/cancel/{id}") + @SaCheckLogin + @Operation(summary = "取消报名参加代理商活动") + public ResultBean cancelSignUp(@PathVariable("id") Integer id) { + Integer parentId = StpUtil.getLoginIdAsInt(); + return ResultBean.success(appParentAgentActivityService.cancelSignUp(id,parentId)); + } + + @GetMapping("/{agentId}/{activityId}/info") + @SaCheckLogin + @Operation(summary = "获取家长参与代理商活动详情") + public ResultBean getRelationById(@PathVariable("agentId") Integer agentId,@PathVariable("activityId") Integer activityId) { + Integer parentId = StpUtil.getLoginIdAsInt(); + return ResultBean.success(appParentAgentActivityService.getByActivityIdAndParentId(agentId,activityId,parentId)); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppMpSignUpActivityReq.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppMpSignUpActivityReq.java new file mode 100644 index 0000000..f9065a2 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppMpSignUpActivityReq.java @@ -0,0 +1,49 @@ +package com.seer.teach.mp.app.controller.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; +import java.util.Set; + +@Schema(name = "AppMpSignUpActivityReq", description = "家长报名参加代理商活动Req") +@Data +public class AppMpSignUpActivityReq { + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "孩子姓名") + private String childName; + + @Schema(description = "孩子性别") + private String childGender; + + @Schema(description = "孩子出生日期") + private LocalDate childBirthDate; + + @Schema(description = "年级") + private String grade; + + @Schema(description = "学校") + private String school; + + @Schema(description = "地区") + private String region; + + @Schema(description = "家长身份") + private String parentIdentity; + + @Schema(description = "学习情况") + private String learningSituation; + + @Schema(description = "薄弱科目") + private List weakSubjectIds; + + @Schema(description = "优势科目") + private List strongSubjectIds; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppMpSignUpActivityResp.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppMpSignUpActivityResp.java new file mode 100644 index 0000000..940737a --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppMpSignUpActivityResp.java @@ -0,0 +1,53 @@ +package com.seer.teach.mp.app.controller.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; + +@Schema(name = "AppMpSignUpActivityResp", description = "家长报名参加代理商活动信息Resp") +@Data +public class AppMpSignUpActivityResp { + + @Schema(description = "id") + private Integer id; + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "活动名称") + private String activityName; + + @Schema(description = "代理商名称") + private String agentName; + + @Schema(description = "孩子姓名") + private String childName; + + @Schema(description = "孩子性别") + private String childGender; + + @Schema(description = "孩子出生日期") + private LocalDate childBirthDate; + + @Schema(description = "年级") + private String grade; + + @Schema(description = "学校") + private String school; + + @Schema(description = "地区") + private String region; + + @Schema(description = "家长身份") + private String parentIdentity; + + @Schema(description = "学习情况") + private String learningSituation; + + @Schema(description = "薄弱科目") + private String weakSubject; +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppMpActivityInfoCollectionConvert.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppMpActivityInfoCollectionConvert.java new file mode 100644 index 0000000..228987a --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppMpActivityInfoCollectionConvert.java @@ -0,0 +1,18 @@ +package com.seer.teach.mp.app.convert; + +import com.seer.teach.mp.app.controller.req.AppMpSignUpActivityReq; +import com.seer.teach.mp.app.controller.resp.AppMpSignUpActivityResp; +import com.seer.teach.mp.entity.MpActivityInfoCollectionEntity; +import org.apache.ibatis.annotations.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface AppMpActivityInfoCollectionConvert { + + AppMpActivityInfoCollectionConvert INSTANCE = Mappers.getMapper(AppMpActivityInfoCollectionConvert.class); + + AppMpSignUpActivityResp convert2Resp(MpActivityInfoCollectionEntity entity); + + + MpActivityInfoCollectionEntity convert2Entity(AppMpSignUpActivityReq request); +} diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/AppParentAgentActivityService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/AppParentAgentActivityService.java new file mode 100644 index 0000000..2c3c5d7 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/AppParentAgentActivityService.java @@ -0,0 +1,136 @@ +package com.seer.teach.mp.app.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.seer.teach.common.enums.ResultCodeEnum; +import com.seer.teach.common.utils.AssertUtils; +import com.seer.teach.mp.app.controller.req.AppMpSignUpActivityReq; +import com.seer.teach.mp.app.controller.resp.AppMpSignUpActivityResp; +import com.seer.teach.mp.app.convert.AppMpActivityInfoCollectionConvert; +import com.seer.teach.mp.entity.MpActivityEntity; +import com.seer.teach.mp.entity.MpActivityInfoCollectionEntity; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import com.seer.teach.mp.entity.MpAgentEntity; +import com.seer.teach.mp.entity.MpParentAgentActivityRelationEntity; +import com.seer.teach.mp.service.IMpActivityInfoCollectionService; +import com.seer.teach.mp.service.IMpActivityService; +import com.seer.teach.mp.service.IMpAgentActivityParticipantService; +import com.seer.teach.mp.service.IMpAgentService; +import com.seer.teach.mp.service.IMpParentAgentActivityRelationService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.Objects; + +@RequiredArgsConstructor +@Slf4j +@Service +public class AppParentAgentActivityService { + + private final IMpParentAgentActivityRelationService parentAgentActivityRelationService; + private final IMpActivityInfoCollectionService activityInfoCollectionService; + private final IMpActivityService activityService; + private final IMpAgentService agentService; + private final IMpAgentActivityParticipantService mpAgentActivityParticipantService; + + /** + * 报名活动 + * + * @param request 报名信息 + * @param parentId 家长ID + * @return true表示成功,false表示失败 + */ + public boolean signUpForActivityWithInfo(AppMpSignUpActivityReq request, Integer parentId) { + Integer agentId = request.getAgentId(); + Integer activityId = request.getActivityId(); + MpActivityEntity activity = activityService.getById(activityId); + AssertUtils.notNull(activity, ResultCodeEnum.INVALID_ACTIVITY); + + MpAgentEntity agent = agentService.getById(agentId); + AssertUtils.notNull(agent, ResultCodeEnum.INVALID_AGENT); + + MpAgentActivityParticipantEntity participants = mpAgentActivityParticipantService.getParticipantsByActivityAndAgent(request.getActivityId(), request.getAgentId()); + AssertUtils.notNull(participants, ResultCodeEnum.AGENT_NON_PARTICIPANT_ACTIVE); + + MpParentAgentActivityRelationEntity relation = parentAgentActivityRelationService.getByAgentIdAndActivityIdAndParentId(agentId, activityId, parentId); + AssertUtils.isNull(relation, ResultCodeEnum.PARENT_ALREADY_SIGN_UP); + + relation = new MpParentAgentActivityRelationEntity(); + relation.setActivityId(activityId); + relation.setAgentId(agentId); + relation.setParentId(parentId); + relation.setActivityName(activity.getActivityName()); + relation.setAgentName(agent.getAgentName()); + relation.setStatus(1); + relation.setSignUpTime(LocalDateTime.now()); + boolean saved = parentAgentActivityRelationService.save(relation); + log.info("报名结果:{},关系ID:{}", saved, relation.getId()); + + if(saved){ + MpActivityInfoCollectionEntity mpActivityInfoCollectionEntity = AppMpActivityInfoCollectionConvert.INSTANCE.convert2Entity(request); + mpActivityInfoCollectionEntity.setRelationId(relation.getId()); + boolean activityInfoCollectionResult = activityInfoCollectionService.save(mpActivityInfoCollectionEntity); + log.info("活动信息收集结果:{}", activityInfoCollectionResult); + return activityInfoCollectionResult; + } + return false; + } + + /** + * 更新活动信息 + * + * @param request 活动信息 + * @param parentId 家长ID + * @return true表示成功,false表示失败 + */ + public boolean updateActivityInfo(AppMpSignUpActivityReq request, Integer parentId) { + Integer agentId = request.getAgentId(); + Integer activityId = request.getActivityId(); + MpParentAgentActivityRelationEntity relation = parentAgentActivityRelationService.getByAgentIdAndActivityIdAndParentId(agentId, activityId, parentId); + AssertUtils.notNull(relation, ResultCodeEnum.PARENT_NOT_SIGNED_UP); + + MpActivityInfoCollectionEntity mpActivityInfoCollectionEntity = AppMpActivityInfoCollectionConvert.INSTANCE.convert2Entity(request); + mpActivityInfoCollectionEntity.setRelationId(relation.getId()); + return activityInfoCollectionService.updateById(mpActivityInfoCollectionEntity); + } + + /** + * 取消报名 + * + * @param relationId 关系ID + * @param parentId 家长ID + * @return true表示成功,false表示失败 + */ + public boolean cancelSignUp(Integer relationId, Integer parentId) { + MpParentAgentActivityRelationEntity relation = parentAgentActivityRelationService.getById(relationId); + if (Objects.nonNull(relation) && relation.getParentId().equals(parentId)) { + relation.setStatus(0); + boolean result = parentAgentActivityRelationService.updateById(relation); + log.info("取消报名结果:{}", result); + return result; + } + return false; + } + + + /** + * 获取报名信息 + * + * @param agentId 代理商ID + * @param activityId 活动ID + * @param parentId 家长ID + * @return 报名信息 + */ + public AppMpSignUpActivityResp getByActivityIdAndParentId(Integer agentId, Integer activityId, Integer parentId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MpParentAgentActivityRelationEntity::getActivityId, activityId) + .eq(MpParentAgentActivityRelationEntity::getParentId, parentId) + .eq(MpParentAgentActivityRelationEntity::getAgentId, agentId); + MpParentAgentActivityRelationEntity one = parentAgentActivityRelationService.getOne(wrapper); + AssertUtils.notNull(one, ResultCodeEnum.INVALID_ACTIVITY); + MpActivityInfoCollectionEntity activityInfoCollection = activityInfoCollectionService.getByActivityIdAndParentId(agentId, activityId, parentId); + return AppMpActivityInfoCollectionConvert.INSTANCE.convert2Resp(activityInfoCollection); + } + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java index 7f15766..82aaa9e 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java @@ -18,9 +18,10 @@ public interface IAppAgentActivityService { * 分页查询代理商活动列表 * * @param query 查询条件 + * @param agentId 代理商ID * @return 代理商活动分页列表 */ - PageListBean pageList(AppAgentActivityQueryReq query); + PageListBean pageList(AppAgentActivityQueryReq query,Integer agentId); /** * 根据ID获取活动详情 diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java index f53ab8a..bfb14db 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java @@ -32,13 +32,13 @@ import java.util.Objects; @RequiredArgsConstructor public class AppAgentActivityServiceImpl implements IAppAgentActivityService { - private final IMpActivityService agentActivityService; + private final IMpActivityService activityService; @Override - public PageListBean pageList(AppAgentActivityQueryReq query) { + public PageListBean pageList(AppAgentActivityQueryReq query,Integer agentId) { log.info("查询参数:{}", query); IPage page = new Page<>(query.getPageNo(), query.getPageSize()); - var pageResult = agentActivityService.page(page, new LambdaQueryWrapper<>(MpActivityEntity.class) + var pageResult = activityService.page(page, new LambdaQueryWrapper<>(MpActivityEntity.class) .like(StringUtils.isNotBlank(query.getActivityName()), MpActivityEntity::getActivityName, query.getActivityName()) .eq(Objects.nonNull(query.getStatus()), MpActivityEntity::getStatus, query.getStatus())); if(Objects.isNull(pageResult) || CollectionUtil.isEmpty(pageResult.getRecords())){ @@ -50,7 +50,7 @@ public class AppAgentActivityServiceImpl implements IAppAgentActivityService { @Override public AppAgentActivityResp getById(Integer id) { - MpActivityEntity entity = agentActivityService.getById(id); + MpActivityEntity entity = activityService.getById(id); return AppAgentActivityConvert.INSTANCE.convertToResp(entity); } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/api/impl/MpAgentServiceApiImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/api/impl/MpAgentServiceApiImpl.java deleted file mode 100644 index 2a59844..0000000 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/api/impl/MpAgentServiceApiImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.seer.teach.mp.api.impl; - -import com.seer.teach.common.ResultBean; -import com.seer.teach.mp.api.dto.AgentActivityParticipantDTO; -import com.seer.teach.mp.service.IMpAgentActivityParticipantService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; -import java.util.stream.Collectors; - -@RestController -@RequiredArgsConstructor -public class MpAgentServiceApiImpl implements MpAgentServiceApi { - - private final IMpAgentActivityParticipantService agentActivityParticipantService; - - @Override - public ResultBean> getParticipantParents(Integer activityId, Integer agentId) { - var participants = agentActivityParticipantService.getParticipantsByActivityAndAgent(activityId, agentId); - List result = participants.stream() - .map(participant -> { - AgentActivityParticipantDTO dto = new AgentActivityParticipantDTO(); - dto.setId(participant.getId()); - dto.setActivityId(participant.getActivityId()); - dto.setAgentId(participant.getAgentId()); - dto.setParentId(participant.getParentId()); - dto.setCreateTime(participant.getCreateTime()); - dto.setUpdateTime(participant.getUpdateTime()); - return dto; - }) - .collect(Collectors.toList()); - - return ResultBean.success(result); - } -} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java deleted file mode 100644 index a55d554..0000000 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/cache/MpAgentActivityCache.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.seer.teach.mp.cache; - -import com.seer.teach.common.utils.RedisUtil; -import com.seer.teach.mp.entity.MpActivityEntity; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.time.Duration; -import java.util.List; - -/** - * 代理商活动缓存服务 - */ -@Slf4j -@Component -@RequiredArgsConstructor -public class MpAgentActivityCache { - - private final RedisUtil redisUtil; - - private static final String AGENT_ACTIVITY_PREFIX = "mp:agent:activity:"; - private static final String AGENT_ACTIVITY_LIST_PREFIX = "mp:agent:activity:list:"; - private static final Duration CACHE_TTL = Duration.ofMinutes(30); - - /** - * 获取活动详情缓存 - */ - public MpActivityEntity getActivityById(Integer id) { - String key = AGENT_ACTIVITY_PREFIX + id; - String value = redisUtil.get(key); - if (value != null) { - try { - return cn.hutool.json.JSONUtil.toBean(value, MpActivityEntity.class); - } catch (Exception e) { - log.error("从缓存获取活动详情失败, id: {}", id, e); - } - } - return null; - } - - /** - * 设置活动详情缓存 - */ - public void setActivityById(Integer id, MpActivityEntity entity) { - String key = AGENT_ACTIVITY_PREFIX + id; - try { - String value = cn.hutool.json.JSONUtil.toJsonStr(entity); - redisUtil.set(key, value, CACHE_TTL.toSeconds()); - } catch (Exception e) { - log.error("设置活动详情缓存失败, id: {}", id, e); - } - } - - /** - * 删除活动详情缓存 - */ - public void deleteActivityById(Integer id) { - String key = AGENT_ACTIVITY_PREFIX + id; - redisUtil.del(key); - } - - /** - * 获取活动列表缓存 - */ - public List getActivityList(String keySuffix) { - String key = AGENT_ACTIVITY_LIST_PREFIX + keySuffix; - String value = redisUtil.get(key); - if (value != null) { - try { - return cn.hutool.json.JSONUtil.toList(value, MpActivityEntity.class); - } catch (Exception e) { - log.error("从缓存获取活动列表失败, key: {}", key, e); - } - } - return null; - } - - /** - * 设置活动列表缓存 - */ - public void setActivityList(String keySuffix, List entities) { - String key = AGENT_ACTIVITY_LIST_PREFIX + keySuffix; - try { - String value = cn.hutool.json.JSONUtil.toJsonStr(entities); - redisUtil.set(key, value, CACHE_TTL.toSeconds()); - } catch (Exception e) { - log.error("设置活动列表缓存失败, key: {}", key, e); - } - } - - /** - * 删除活动列表缓存 - */ - public void deleteActivityList(String keySuffix) { - String key = AGENT_ACTIVITY_LIST_PREFIX + keySuffix; - redisUtil.del(key); - } - - /** - * 清除所有活动相关缓存 - */ - public void clearAllActivityCache() { - // 可以通过通配符删除,但这里简单地提供一个清理方法 - log.info("清除所有代理商活动缓存"); - } -} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityErrorCodeEnum.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityErrorCodeEnum.java deleted file mode 100644 index eb4aacf..0000000 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityErrorCodeEnum.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.seer.teach.mp.exception; - -import com.seer.teach.common.enums.ResultCodeEnum; -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 代理商活动错误码枚举 - */ -@Getter -@AllArgsConstructor -public enum AgentActivityErrorCodeEnum implements ResultCodeEnum { - - ACTIVITY_NOT_FOUND(404, "活动不存在"), - ACTIVITY_ALREADY_EXISTS(409, "活动已存在"), - ACTIVITY_NOT_ACTIVE(400, "活动未开始或已结束"), - PARTICIPATION_FAILED(500, "参与活动失败"), - INVALID_AGENT(403, "无效的代理商"), - AGENT_NOT_FOUND(404, "代理商不存在"), - PARENT_NOT_FOUND(404, "家长不存在"), - INVALID_ACTIVITY_STATUS(400, "无效的活动状态"); - - private final Integer code; - private final String message; -} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityException.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityException.java deleted file mode 100644 index 8c323fb..0000000 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentActivityException.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.seer.teach.mp.exception; - -import com.seer.teach.common.enums.ResultCodeEnum; -import com.seer.teach.common.exception.CommonException; -import lombok.Getter; - -/** - * 代理商活动相关异常 - */ -@Getter -public class AgentActivityException extends CommonException { - - public AgentActivityException(ResultCodeEnum resultCodeEnum) { - super(resultCodeEnum); - } - - public AgentActivityException(ResultCodeEnum resultCodeEnum, String message) { - super(resultCodeEnum, message); - } - - public AgentActivityException(String message) { - super(message); - } -} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentErrorCodeEnum.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentErrorCodeEnum.java deleted file mode 100644 index ee1ef03..0000000 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentErrorCodeEnum.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.seer.teach.mp.exception; - -import com.seer.teach.common.exception.ErrorCode; - -/** - * 代理商相关错误码枚举 - */ -public enum AgentErrorCodeEnum implements ErrorCode { - - AGENT_NOT_FOUND(40001, "代理商不存在"), - AGENT_CODE_EXISTS(40002, "代理商编码已存在"), - AGENT_STATUS_INVALID(40003, "代理商状态无效"), - AGENT_CONTACT_INFO_INVALID(40004, "联系信息无效"); - - private final int code; - private final String message; - - AgentErrorCodeEnum(int code, String message) { - this.code = code; - this.message = message; - } - - @Override - public int getCode() { - return code; - } - - @Override - public String getMessage() { - return message; - } -} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentException.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentException.java deleted file mode 100644 index c79eee8..0000000 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/exception/AgentException.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.seer.teach.mp.exception; - -import com.seer.teach.common.exception.BusinessException; -import com.seer.teach.common.exception.ErrorCode; - -/** - * 代理商业务异常类 - */ -public class AgentException extends BusinessException { - - public AgentException(ErrorCode errorCode) { - super(errorCode); - } - - public AgentException(ErrorCode errorCode, String detailMessage) { - super(errorCode, detailMessage); - } - - public AgentException(String message, Throwable cause) { - super(message, cause); - } - - public AgentException(ErrorCode errorCode, String detailMessage, Throwable cause) { - super(errorCode, detailMessage, cause); - } -} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityInfoCollectionService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityInfoCollectionService.java new file mode 100644 index 0000000..8dc2c41 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityInfoCollectionService.java @@ -0,0 +1,23 @@ +package com.seer.teach.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.seer.teach.mp.entity.MpActivityInfoCollectionEntity; + +/** + *

+ * 活动信息收集表 服务类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +public interface IMpActivityInfoCollectionService extends IService { + + /** + * 根据活动ID和家长ID获取信息收集记录 + * @param agentId 活动ID + * @param parentId 家长ID + * @return 信息收集记录 + */ + MpActivityInfoCollectionEntity getByActivityIdAndParentId(Integer agentId,Integer activityId, Integer parentId); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java index f371f00..4fddc20 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java @@ -1,11 +1,8 @@ package com.seer.teach.mp.service; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; -import java.util.List; - /** *

* 代理商活动参与记录表 服务类 @@ -16,23 +13,6 @@ import java.util.List; */ public interface IMpAgentActivityParticipantService extends IService { - /** - * 分页查询活动参与记录列表 - * - * @param pageParm 分页参数 - * @param query 查询条件 - * @return 活动参与记录分页列表 - */ - IPage pageList(com.baomidou.mybatisplus.extension.plugins.pagination.Page pageParm, MpAgentActivityParticipantEntity query); - - /** - * 添加活动参与记录 - * - * @param entity 参与记录实体 - * @return 操作是否成功 - */ - boolean addParticipant(MpAgentActivityParticipantEntity entity); - /** * 根据活动ID和代理商ID获取参与记录 * @@ -40,5 +20,5 @@ public interface IMpAgentActivityParticipantService extends IService getParticipantsByActivityAndAgent(Integer activityId, Integer agentId); + MpAgentActivityParticipantEntity getParticipantsByActivityAndAgent(Integer activityId, Integer agentId); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentService.java index 50dd2d2..f9ed795 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentService.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentService.java @@ -12,47 +12,5 @@ import java.util.Map; */ public interface IMpAgentService extends IService { - /** - * 分页查询代理商列表 - * @param params 查询参数 - * @return 分页结果 - */ - PageUtils queryPage(Map params); - /** - * 分页查询代理商列表 - * @param page 分页参数 - * @param query 查询条件 - * @return 分页结果 - */ - IPage pageList(Page page, MpAgentEntity query); - - /** - * 根据ID获取代理商信息 - * @param id 代理商ID - * @return 代理商实体 - * @throws AgentException 当代理商不存在时抛出异常 - */ - MpAgentEntity getAgentById(Integer id); - - /** - * 保存代理商信息 - * @param agentEntity 代理商实体 - * @throws AgentException 当代理商信息验证失败或编码已存在时抛出异常 - */ - boolean saveAgent(MpAgentEntity agentEntity); - - /** - * 更新代理商信息 - * @param agentEntity 代理商实体 - * @throws AgentException 当代理商不存在、信息验证失败或编码已存在时抛出异常 - */ - boolean updateAgent(MpAgentEntity agentEntity); - - /** - * 删除代理商 - * @param id 代理商ID - * @throws AgentException 当代理商不存在时抛出异常 - */ - void deleteAgent(Integer id); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpParentAgentActivityRelationService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpParentAgentActivityRelationService.java new file mode 100644 index 0000000..47eef6b --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpParentAgentActivityRelationService.java @@ -0,0 +1,33 @@ +package com.seer.teach.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.seer.teach.mp.entity.MpParentAgentActivityRelationEntity; + +/** + *

+ * 家长参与代理商活动关系表 服务类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +public interface IMpParentAgentActivityRelationService extends IService { + + /** + * 根据活动ID和家长ID获取关系记录 + * + * @param agentId 代理商ID + * @param activityId 活动ID + * @param parentId 家长ID + * @return 关系记录 + */ + MpParentAgentActivityRelationEntity getByAgentIdAndActivityIdAndParentId(Integer agentId, Integer activityId, Integer parentId); + + /** + * 根据活动ID和家长ID获取关系记录 + * @param activityId 活动ID + * @param parentId 家长ID + * @return 关系记录 + */ + MpParentAgentActivityRelationEntity getByAgentIdAndActivityIdAndParentId(Integer activityId, Integer parentId); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityInfoCollectionServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityInfoCollectionServiceImpl.java new file mode 100644 index 0000000..16da709 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityInfoCollectionServiceImpl.java @@ -0,0 +1,31 @@ +package com.seer.teach.mp.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.seer.teach.mp.entity.MpActivityInfoCollectionEntity; +import com.seer.teach.mp.mapper.MpActivityInfoCollectionMapper; +import com.seer.teach.mp.service.IMpActivityInfoCollectionService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** + *

+ * 活动信息收集表 服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Service +@AllArgsConstructor +public class MpActivityInfoCollectionServiceImpl extends ServiceImpl implements IMpActivityInfoCollectionService { + + @Override + public MpActivityInfoCollectionEntity getByActivityIdAndParentId(Integer agentId, Integer activityId, Integer parentId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MpActivityInfoCollectionEntity::getAgentId, agentId) + .eq(MpActivityInfoCollectionEntity::getActivityId, activityId) + .eq(MpActivityInfoCollectionEntity::getParentId, parentId); + return getOne(queryWrapper, false); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java index e309570..ae0b59a 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java @@ -34,87 +34,12 @@ public class MpAgentActivityParticipantServiceImpl extends ServiceImpl pageList(Page pageParm, MpAgentActivityParticipantEntity query) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - - if (query != null) { - if (query.getActivityId() != null) { - queryWrapper.eq(MpAgentActivityParticipantEntity::getActivityId, query.getActivityId()); - } - if (query.getAgentId() != null) { - queryWrapper.eq(MpAgentActivityParticipantEntity::getAgentId, query.getAgentId()); - } - if (query.getParentId() != null) { - queryWrapper.eq(MpAgentActivityParticipantEntity::getParentId, query.getParentId()); - } - } - - queryWrapper.orderByDesc(MpAgentActivityParticipantEntity::getCreateTime); - - return baseMapper.selectPage(pageParm, queryWrapper); - } - - @Override - public boolean addParticipant(MpAgentActivityParticipantEntity entity) { - // 验证参与记录数据 - validateParticipant(entity); - - // 检查是否已存在相同的参与记录 - LambdaQueryWrapper queryWrapper = - new LambdaQueryWrapper() - .eq(MpAgentActivityParticipantEntity::getActivityId, entity.getActivityId()) - .eq(MpAgentActivityParticipantEntity::getAgentId, entity.getAgentId()) - .eq(MpAgentActivityParticipantEntity::getParentId, entity.getParentId()); - - long count = this.count(queryWrapper); - if (count > 0) { - // 如果已存在,则不重复添加 - throw new com.seer.teach.mp.exception.AgentActivityException(AgentActivityErrorCodeEnum.PARTICIPATION_FAILED, "已参与该活动"); - } - - entity.setCreateTime(LocalDateTime.now()); - entity.setUpdateTime(LocalDateTime.now()); - - boolean result = this.save(entity); - - // 记录操作日志 - if (result) { - String beforeData = ""; - String afterData = JSONUtil.toJsonStr(entity); - String description = "代理商参与活动,代理商ID: " + entity.getAgentId() + ", 家长ID: " + entity.getParentId(); - - agentActivityLogService.logOperation( - entity.getActivityId(), - entity.getAgentId(), - "参与活动", - description, - beforeData, - afterData - ); - } - - return result; - } - - /** - * 验证参与记录数据 - */ - private void validateParticipant(MpAgentActivityParticipantEntity entity) { - AssertUtils.notNull(entity.getActivityId(), AgentActivityErrorCodeEnum.ACTIVITY_NOT_FOUND, "活动ID不能为空"); - AssertUtils.notNull(entity.getAgentId(), AgentActivityErrorCodeEnum.INVALID_AGENT, "代理商ID不能为空"); - AssertUtils.notNull(entity.getParentId(), AgentActivityErrorCodeEnum.PARENT_NOT_FOUND, "家长ID不能为空"); - - // 检查活动是否存在 - // 这里可以调用活动服务检查活动是否存在,暂时跳过 - } - - @Override - public List getParticipantsByActivityAndAgent(Integer activityId, Integer agentId) { + public MpAgentActivityParticipantEntity getParticipantsByActivityAndAgent(Integer activityId, Integer agentId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(MpAgentActivityParticipantEntity::getActivityId, activityId) .eq(MpAgentActivityParticipantEntity::getAgentId, agentId); - return this.list(queryWrapper); + return super.getOne(queryWrapper); } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java index c63f341..f6b540e 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java @@ -1,20 +1,10 @@ package com.seer.teach.mp.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -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.seer.teach.common.utils.PageUtils; import com.seer.teach.mp.entity.MpAgentEntity; -import com.seer.teach.mp.exception.AgentErrorCodeEnum; -import com.seer.teach.mp.exception.AgentException; import com.seer.teach.mp.mapper.MpAgentMapper; import com.seer.teach.mp.service.IMpAgentService; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.time.LocalDateTime; -import java.util.Map; /** * 代理商服务实现类 @@ -22,147 +12,4 @@ import java.util.Map; @Service public class MpAgentServiceImpl extends ServiceImpl implements IMpAgentService { - @Override - public PageUtils queryPage(Map params) { - IPage page = this.page( - new Page(Long.parseLong(params.getOrDefault("current", "1").toString()), - Long.parseLong(params.getOrDefault("size", "10").toString())) - ); - return new PageUtils(page); - } - - @Override - public IPage pageList(Page page, MpAgentEntity query) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - - if (query != null) { - if (query.getAgentName() != null && !query.getAgentName().trim().isEmpty()) { - queryWrapper.like("agent_name", query.getAgentName()); - } - if (query.getAgentCode() != null && !query.getAgentCode().trim().isEmpty()) { - queryWrapper.eq("agent_code", query.getAgentCode()); - } - if (query.getAgentLevel() != null && !query.getAgentLevel().trim().isEmpty()) { - queryWrapper.eq("agent_level", query.getAgentLevel()); - } - if (query.getContactName() != null && !query.getContactName().trim().isEmpty()) { - queryWrapper.like("contact_name", query.getContactName()); - } - if (query.getContactPhone() != null && !query.getContactPhone().trim().isEmpty()) { - queryWrapper.eq("contact_phone", query.getContactPhone()); - } - if (query.getStatus() != null) { - queryWrapper.eq("status", query.getStatus()); - } - } - - queryWrapper.orderByDesc("create_time"); - - return this.page(page, queryWrapper); - } - - @Override - public MpAgentEntity getAgentById(Integer id) { - if (id == null || id <= 0) { - throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商ID不能为空"); - } - MpAgentEntity agent = this.getById(id); - if (agent == null) { - throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND); - } - return agent; - } - - @Override - @Transactional - public boolean saveAgent(MpAgentEntity agentEntity) { - validateAgent(agentEntity); - - // 检查代理商编码是否已存在 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("agent_code", agentEntity.getAgentCode()); - int count = this.count(queryWrapper); - if (count > 0) { - throw new AgentException(AgentErrorCodeEnum.AGENT_CODE_EXISTS); - } - - agentEntity.setCreateTime(LocalDateTime.now()); - agentEntity.setUpdateTime(LocalDateTime.now()); - - boolean result = this.save(agentEntity); - return result; - } - - @Override - @Transactional - public boolean updateAgent(MpAgentEntity agentEntity) { - validateAgent(agentEntity); - - if (agentEntity.getId() == null || agentEntity.getId() <= 0) { - throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商ID不能为空"); - } - - // 检查代理商是否存在 - MpAgentEntity existingAgent = this.getById(agentEntity.getId()); - if (existingAgent == null) { - throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND); - } - - // 检查代理商编码是否被其他代理商使用 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("agent_code", agentEntity.getAgentCode()); - queryWrapper.ne("id", agentEntity.getId()); - int count = this.count(queryWrapper); - if (count > 0) { - throw new AgentException(AgentErrorCodeEnum.AGENT_CODE_EXISTS); - } - - agentEntity.setUpdateTime(LocalDateTime.now()); - - boolean result = this.updateById(agentEntity); - return result; - } - - @Override - @Transactional - public void deleteAgent(Integer id) { - if (id == null || id <= 0) { - throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商ID不能为空"); - } - - MpAgentEntity agent = this.getById(id); - if (agent == null) { - throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND); - } - - this.removeById(id); - } - - /** - * 验证代理商实体 - */ - private void validateAgent(MpAgentEntity agentEntity) { - if (agentEntity == null) { - throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商信息不能为空"); - } - - if (agentEntity.getAgentName() == null || agentEntity.getAgentName().trim().isEmpty()) { - throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商名称不能为空"); - } - - if (agentEntity.getAgentCode() == null || agentEntity.getAgentCode().trim().isEmpty()) { - throw new AgentException(AgentErrorCodeEnum.AGENT_NOT_FOUND, "代理商编码不能为空"); - } - - if (agentEntity.getStatus() != null && (agentEntity.getStatus() != 0 && agentEntity.getStatus() != 1)) { - throw new AgentException(AgentErrorCodeEnum.AGENT_STATUS_INVALID, "代理商状态必须为0或1"); - } - - if (agentEntity.getContactPhone() != null && !agentEntity.getContactPhone().trim().isEmpty()) { - // 简单验证手机号格式 - if (!agentEntity.getContactPhone().matches("^1[3-9]\d{9}$")) { - throw new AgentException(AgentErrorCodeEnum.AGENT_CONTACT_INFO_INVALID, "联系电话格式不正确"); - } - } - } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpParentAgentActivityRelationServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpParentAgentActivityRelationServiceImpl.java new file mode 100644 index 0000000..4e705e3 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpParentAgentActivityRelationServiceImpl.java @@ -0,0 +1,41 @@ +package com.seer.teach.mp.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.seer.teach.mp.entity.MpParentAgentActivityRelationEntity; +import com.seer.teach.mp.mapper.MpParentAgentActivityRelationMapper; +import com.seer.teach.mp.service.IMpParentAgentActivityRelationService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; + +/** + *

+ * 家长参与代理商活动关系表 服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Service +@AllArgsConstructor +public class MpParentAgentActivityRelationServiceImpl extends ServiceImpl implements IMpParentAgentActivityRelationService { + + @Override + public MpParentAgentActivityRelationEntity getByAgentIdAndActivityIdAndParentId(Integer agentId, Integer activityId, Integer parentId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MpParentAgentActivityRelationEntity::getActivityId, activityId) + .eq(MpParentAgentActivityRelationEntity::getAgentId, agentId) + .eq(MpParentAgentActivityRelationEntity::getParentId, parentId); + return getOne(queryWrapper); + } + + @Override + public MpParentAgentActivityRelationEntity getByAgentIdAndActivityIdAndParentId(Integer activityId, Integer parentId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MpParentAgentActivityRelationEntity::getActivityId, activityId) + .eq(MpParentAgentActivityRelationEntity::getParentId, parentId); + return getOne(queryWrapper); + } +} \ No newline at end of file From 42bd6576eb4f6d05bf518242a28b25626e43fc3a Mon Sep 17 00:00:00 2001 From: Wang Date: Tue, 30 Dec 2025 17:59:48 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=EF=BC=8C=E6=B4=BB=E5=8A=A8=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E5=91=98=E5=B7=A5=E5=85=B3=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E6=B4=BB=E5=8A=A8=E5=8F=82=E4=B8=8E=E8=80=85=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teach/common/enums/ResultCodeEnum.java | 3 +- .../MpAgentActivityParticipantEntity.java | 6 -- seer-mp/seer-mp-service-app/pom.xml | 17 ++++ .../AppAgentActivityController.java | 27 ++++--- .../AppAgentActivityParentInfoController.java | 49 ++++++++++++ ...AppAgentActivityParticipantController.java | 22 +++--- .../mp/app/controller/AppAgentController.java | 44 +++++++++++ .../AppParentAgentActivityController.java | 3 +- .../req/AppMpSignUpActivityReq.java | 7 +- .../resp/AgentActivityParentInfoResp.java | 59 ++++++++++++++ .../resp/AgentActivityParticipantResp.java | 6 +- ...ActivityResp.java => AppActivityResp.java} | 4 +- .../app/controller/resp/AppMpAgentResp.java | 30 ++++++++ .../app/convert/AppAgentActivityConvert.java | 6 +- .../teach/mp/app/convert/AppAgentConvert.java | 19 +++++ .../AppMpActivityInfoCollectionConvert.java | 3 +- ...yService.java => IAppActivityService.java} | 8 +- .../IAppAgentActivityParentInfoService.java | 26 +++++++ .../IAppAgentActivityParticipantService.java | 6 +- .../mp/app/service/IAppAgentService.java | 25 ++++++ ...eImpl.java => AppActivityServiceImpl.java} | 10 +-- ...AppAgentActivityParentInfoServiceImpl.java | 77 +++++++++++++++++++ ...ppAgentActivityParticipantServiceImpl.java | 43 +++++++---- .../app/service/impl/AppAgentServiceImpl.java | 44 +++++++++++ .../IMpAgentActivityParticipantService.java | 10 +++ .../IMpAgentEmployeeRelationService.java | 8 ++ .../teach/mp/service/IMpAgentService.java | 22 ++++++ ...MpAgentActivityParticipantServiceImpl.java | 12 +-- .../MpAgentEmployeeRelationServiceImpl.java | 34 +++----- .../mp/service/impl/MpAgentServiceImpl.java | 14 ++++ 30 files changed, 545 insertions(+), 99 deletions(-) create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParentInfoController.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentController.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParentInfoResp.java rename seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/{AppAgentActivityResp.java => AppActivityResp.java} (86%) create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppMpAgentResp.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentConvert.java rename seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/{IAppAgentActivityService.java => IAppActivityService.java} (68%) create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParentInfoService.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentService.java rename seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/{AppAgentActivityServiceImpl.java => AppActivityServiceImpl.java} (84%) create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParentInfoServiceImpl.java create mode 100644 seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentServiceImpl.java diff --git a/seer-common/common-enums/src/main/java/com/seer/teach/common/enums/ResultCodeEnum.java b/seer-common/common-enums/src/main/java/com/seer/teach/common/enums/ResultCodeEnum.java index aaedb35..ff2e9cf 100644 --- a/seer-common/common-enums/src/main/java/com/seer/teach/common/enums/ResultCodeEnum.java +++ b/seer-common/common-enums/src/main/java/com/seer/teach/common/enums/ResultCodeEnum.java @@ -327,8 +327,9 @@ public enum ResultCodeEnum { INVALID_ACTIVITY(13003, "活动不存在或已失效"), INVALID_AGENT(13004, "代理商不存在或已失效"), AGENT_STATUS_INVALID(13005, "代理商状态无效"), - AGENT_NON_PARTICIPANT_ACTIVE(130061, "代理商没有参与该活动"), + AGENT_EMPLOYEE_ALREADY_EXISTS(130051, "代理商员工已存在"), AGENT_CONTACT_INFO_INVALID(13006, "联系信息无效"), + AGENT_NON_PARTICIPANT_ACTIVE(130061, "代理商没有参与该活动"), ACTIVITY_NOT_FOUND(13007, "活动不存在"), ACTIVITY_ALREADY_EXISTS(13008, "活动已存在"), ACTIVITY_NOT_ACTIVE(13009, "活动未开始或已结束"), diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityParticipantEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityParticipantEntity.java index a34abd7..821d79d 100644 --- a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityParticipantEntity.java +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityParticipantEntity.java @@ -32,10 +32,4 @@ public class MpAgentActivityParticipantEntity extends BaseEntity { */ @TableField("agent_id") private Integer agentId; - - /** - * 家长ID(对应user表的ID) - */ - @TableField("parent_id") - private Integer parentId; } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/pom.xml b/seer-mp/seer-mp-service-app/pom.xml index 349aab7..31a2b7f 100644 --- a/seer-mp/seer-mp-service-app/pom.xml +++ b/seer-mp/seer-mp-service-app/pom.xml @@ -29,6 +29,23 @@ org.springdoc springdoc-openapi-starter-webmvc-ui + + + org.mapstruct + mapstruct + + + + org.mapstruct + mapstruct-processor + provided + + + + org.projectlombok + lombok-mapstruct-binding + provided + \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java index e417baf..47db2c6 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java @@ -8,12 +8,15 @@ import com.seer.teach.common.annotation.DecryptionAnnotation; import com.seer.teach.common.annotation.EncryptionAnnotation; import com.seer.teach.common.annotation.LogPrint; import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; -import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; -import com.seer.teach.mp.app.service.IAppAgentActivityService; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.seer.teach.mp.app.controller.resp.AppActivityResp; +import com.seer.teach.mp.app.service.IAppActivityService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /** *

@@ -23,29 +26,29 @@ import org.springframework.web.bind.annotation.*; * @author Lingma * @since 2025-12-29 */ -@Tag(name = "APP - 代理商活动") +@Tag(name = "APP - 活动列表") @RestController -@RequestMapping("/app/agent/activity") +@RequestMapping("/app/activity") @LogPrint @EncryptionAnnotation @DecryptionAnnotation @RequiredArgsConstructor public class AppAgentActivityController { - private final IAppAgentActivityService agentActivityService; + private final IAppActivityService agentActivityService; - @Operation(summary = "代理商活动列表") + @Operation(summary = "活动列表") @GetMapping("/page-list") @SaCheckPermission("mp:app:agent:activity:list") - public ResultBean> pageList(AppAgentActivityQueryReq query) { - Integer agentId = StpUtil.getLoginIdAsInt(); - return ResultBean.success(agentActivityService.pageList(query,agentId)); + public ResultBean> pageList(AppAgentActivityQueryReq query) { + Integer userId = StpUtil.getLoginIdAsInt(); + return ResultBean.success(agentActivityService.pageList(query,userId)); } @Operation(summary = "查看活动详情") @GetMapping("/{id}") @SaCheckPermission("mp:app:agent:activity:detail") - public ResultBean getDetail(@PathVariable Integer id) { + public ResultBean getDetail(@PathVariable Integer id) { return ResultBean.success(agentActivityService.getById(id)); } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParentInfoController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParentInfoController.java new file mode 100644 index 0000000..bcd4568 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParentInfoController.java @@ -0,0 +1,49 @@ +package com.seer.teach.mp.app.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.stp.StpUtil; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.annotation.DecryptionAnnotation; +import com.seer.teach.common.annotation.EncryptionAnnotation; +import com.seer.teach.common.annotation.LogPrint; +import com.seer.teach.mp.app.controller.resp.AgentActivityParentInfoResp; +import com.seer.teach.mp.app.service.IAppAgentActivityParentInfoService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +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 java.util.List; + +/** + *

+ * 代理商活动参与家长信息App控制器 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Tag(name = "APP - 代理商活动参与家长信息") +@RestController +@RequestMapping("/app/agent/activity/parent-info") +@LogPrint +@EncryptionAnnotation +@DecryptionAnnotation +@RequiredArgsConstructor +public class AppAgentActivityParentInfoController { + + private final IAppAgentActivityParentInfoService agentActivityParentInfoService; + + @Operation(summary = "获取参加指定活动的家长列表") + @GetMapping("/getActivityParents") + @SaCheckLogin + public ResultBean> getActivityParents( + @RequestParam("activityId") Integer activityId, + @RequestParam("agentId") Integer agentId) { + Integer userId = StpUtil.getLoginIdAsInt(); + return ResultBean.success(agentActivityParentInfoService.getParentsByActivityAndAgent(activityId, agentId,userId)); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java index 5d4c472..87400e6 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java @@ -7,11 +7,14 @@ import com.seer.teach.common.annotation.DecryptionAnnotation; import com.seer.teach.common.annotation.EncryptionAnnotation; import com.seer.teach.common.annotation.LogPrint; import com.seer.teach.mp.app.controller.resp.AgentActivityParticipantResp; -import com.seer.teach.user.api.dto.UserInfoDTO; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.seer.teach.mp.app.service.IAppAgentActivityParticipantService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; +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 java.util.List; @@ -32,14 +35,13 @@ import java.util.List; @RequiredArgsConstructor public class AppAgentActivityParticipantController { - private final com.seer.teach.mp.app.service.IAppAgentActivityParticipantService agentActivityParticipantService; + private final IAppAgentActivityParticipantService agentActivityParticipantService; - - @Operation(summary = "获取代理商参与的活动中的家长列表") - @GetMapping("/parents-by-agent") + @Operation(summary = "获取代理商参加的活动列表") + @GetMapping() @SaCheckPermission("mp:app:agent:participant:parents") - public ResultBean> getParentsByAgentAndActivity( - @RequestParam("activityId") Integer activityId,@RequestParam("agentId") Integer agentId) { - return ResultBean.success(agentActivityParticipantService.getParticipantsByActivityAndAgent(activityId, agentId)); + public ResultBean> getParentsByAgentAndActivity(@RequestParam("agentId") Integer agentId) { + Integer userId = StpUtil.getLoginIdAsInt(); + return ResultBean.success(agentActivityParticipantService.getParticipantsByActivityAndAgent(agentId,userId)); } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentController.java new file mode 100644 index 0000000..2df2e42 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentController.java @@ -0,0 +1,44 @@ +package com.seer.teach.mp.app.controller; + +import cn.dev33.satoken.stp.StpUtil; +import com.seer.teach.common.ResultBean; +import com.seer.teach.common.annotation.DecryptionAnnotation; +import com.seer.teach.common.annotation.EncryptionAnnotation; +import com.seer.teach.common.annotation.LogPrint; +import com.seer.teach.mp.app.controller.resp.AppMpAgentResp; +import com.seer.teach.mp.app.service.IAppActivityService; +import com.seer.teach.mp.app.service.IAppAgentService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 代理商App控制器 + *

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Tag(name = "APP - 代理商管理接口") +@RestController +@RequestMapping("/app/agent") +@LogPrint +@EncryptionAnnotation +@DecryptionAnnotation +@RequiredArgsConstructor +public class AppAgentController { + + private final IAppActivityService agentActivityService; + private final IAppAgentService appAgentService; + + @Operation(summary = "获取代理商详情") + @GetMapping("/detail") + public ResultBean getAgent() { + Integer userId = StpUtil.getLoginIdAsInt(); + return ResultBean.success(appAgentService.getAgentRespByUserId(userId)); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppParentAgentActivityController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppParentAgentActivityController.java index 0eabe28..35b1837 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppParentAgentActivityController.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppParentAgentActivityController.java @@ -3,9 +3,9 @@ package com.seer.teach.mp.app.controller; import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.stp.StpUtil; import com.seer.teach.common.ResultBean; +import com.seer.teach.mp.app.controller.req.AppMpSignUpActivityReq; import com.seer.teach.mp.app.controller.resp.AppMpSignUpActivityResp; import com.seer.teach.mp.app.service.AppParentAgentActivityService; -import com.seer.teach.mp.app.controller.req.AppMpSignUpActivityReq; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; @@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppMpSignUpActivityReq.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppMpSignUpActivityReq.java index f9065a2..907729d 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppMpSignUpActivityReq.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppMpSignUpActivityReq.java @@ -17,17 +17,20 @@ public class AppMpSignUpActivityReq { @Schema(description = "代理商ID") private Integer agentId; + @Schema(description = "手机号码") + private String mobile; + @Schema(description = "孩子姓名") private String childName; @Schema(description = "孩子性别") - private String childGender; + private Integer childGender; @Schema(description = "孩子出生日期") private LocalDate childBirthDate; @Schema(description = "年级") - private String grade; + private Integer grade; @Schema(description = "学校") private String school; diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParentInfoResp.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParentInfoResp.java new file mode 100644 index 0000000..7611267 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParentInfoResp.java @@ -0,0 +1,59 @@ +package com.seer.teach.mp.app.controller.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +@Schema(name = "AgentActivityParentInfoResp", description = "代理商活动参与家长信息Resp") +@Data +public class AgentActivityParentInfoResp { + + @Schema(description = "信息收集记录ID") + private Integer id; + + @Schema(description = "关联的家长参与代理商活动关系ID") + private Integer relationId; + + @Schema(description = "活动ID") + private Integer activityId; + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "家长ID") + private Integer parentId; + + @Schema(description = "孩子姓名") + private String childName; + + @Schema(description = "孩子性别(M-男,F-女)") + private String childGender; + + @Schema(description = "出生年月") + private LocalDate childBirthDate; + + @Schema(description = "年级") + private String grade; + + @Schema(description = "学校") + private String school; + + @Schema(description = "地区") + private String region; + + @Schema(description = "家长身份(爸爸,妈妈)") + private String parentIdentity; + + @Schema(description = "学习情况(优、良、中、差)") + private String learningSituation; + + @Schema(description = "优势学科ID列表") + private List strongSubjectIds; + + @Schema(description = "劣势学科ID列表") + private List weakSubjectIds; + + +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParticipantResp.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParticipantResp.java index 181d1a4..2c50ec5 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParticipantResp.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParticipantResp.java @@ -15,9 +15,7 @@ public class AgentActivityParticipantResp { @Schema(description = "代理商ID") private Integer agentId; - @Schema(description = "家长ID") - private Integer parentId; + private String activityName; + - @Schema(description = "家长手机号") - private String parentMobile; } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentActivityResp.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityResp.java similarity index 86% rename from seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentActivityResp.java rename to seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityResp.java index 2389372..9be7d43 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppAgentActivityResp.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityResp.java @@ -5,9 +5,9 @@ import lombok.Data; import java.time.LocalDateTime; -@Schema(name = "AppAgentActivityResp", description = "代理商活动响应参数") +@Schema(name = "AppActivityResp", description = "活动响应参数") @Data -public class AppAgentActivityResp { +public class AppActivityResp { private Integer id; diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppMpAgentResp.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppMpAgentResp.java new file mode 100644 index 0000000..e78b77d --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppMpAgentResp.java @@ -0,0 +1,30 @@ +package com.seer.teach.mp.app.controller.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "App端代理商响应对象") +public class AppMpAgentResp { + + @Schema(description = "代理商ID") + private Integer agentId; + + @Schema(description = "代理商名称") + private String agentName; + + @Schema(description = "代理商编码") + private String agentCode; + + @Schema(description = "代理商等级") + private String agentLevel; + + @Schema(description = "联系人姓名") + private String contactName; + + @Schema(description = "联系电话") + private String contactPhone; + + @Schema(description = "代理商地址") + private String address; +} diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java index aa50833..9358763 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentActivityConvert.java @@ -1,7 +1,7 @@ package com.seer.teach.mp.app.convert; import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; -import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; +import com.seer.teach.mp.app.controller.resp.AppActivityResp; import com.seer.teach.mp.entity.MpActivityEntity; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -18,7 +18,7 @@ public interface AppAgentActivityConvert { @Mapping(target = "createTime", dateFormat = "yyyy-MM-dd HH:mm:ss") @Mapping(target = "updateTime", dateFormat = "yyyy-MM-dd HH:mm:ss") - AppAgentActivityResp convertToResp(MpActivityEntity entity); + AppActivityResp convertToResp(MpActivityEntity entity); - List convertToRespList(List mpAgentActivityEntities); + List convertToRespList(List mpAgentActivityEntities); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentConvert.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentConvert.java new file mode 100644 index 0000000..8b967ef --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppAgentConvert.java @@ -0,0 +1,19 @@ +package com.seer.teach.mp.app.convert; + +import com.seer.teach.mp.app.controller.resp.AppMpAgentResp; +import com.seer.teach.mp.entity.MpAgentEntity; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +/** + * 代理商实体转换器 + */ +@Mapper +public interface AppAgentConvert { + + AppAgentConvert INSTANCE = Mappers.getMapper(AppAgentConvert.class); + + @Mapping(source = "id", target = "agentId") + AppMpAgentResp entityToResp(MpAgentEntity entity); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppMpActivityInfoCollectionConvert.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppMpActivityInfoCollectionConvert.java index 228987a..36c2cf3 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppMpActivityInfoCollectionConvert.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppMpActivityInfoCollectionConvert.java @@ -13,6 +13,5 @@ public interface AppMpActivityInfoCollectionConvert { AppMpSignUpActivityResp convert2Resp(MpActivityInfoCollectionEntity entity); - MpActivityInfoCollectionEntity convert2Entity(AppMpSignUpActivityReq request); -} +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppActivityService.java similarity index 68% rename from seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java rename to seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppActivityService.java index 82aaa9e..89f6753 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityService.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppActivityService.java @@ -1,7 +1,7 @@ package com.seer.teach.mp.app.service; import com.seer.teach.common.PageListBean; -import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; +import com.seer.teach.mp.app.controller.resp.AppActivityResp; import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; /** @@ -12,7 +12,7 @@ import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; * @author Lingma * @since 2025-12-30 */ -public interface IAppAgentActivityService { +public interface IAppActivityService { /** * 分页查询代理商活动列表 @@ -21,7 +21,7 @@ public interface IAppAgentActivityService { * @param agentId 代理商ID * @return 代理商活动分页列表 */ - PageListBean pageList(AppAgentActivityQueryReq query,Integer agentId); + PageListBean pageList(AppAgentActivityQueryReq query, Integer agentId); /** * 根据ID获取活动详情 @@ -29,5 +29,5 @@ public interface IAppAgentActivityService { * @param id 活动ID * @return 活动详情 */ - AppAgentActivityResp getById(Integer id); + AppActivityResp getById(Integer id); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParentInfoService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParentInfoService.java new file mode 100644 index 0000000..38829b6 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParentInfoService.java @@ -0,0 +1,26 @@ +package com.seer.teach.mp.app.service; + +import com.seer.teach.mp.app.controller.resp.AgentActivityParentInfoResp; + +import java.util.List; + +/** + *

+ * 代理商活动参与家长信息服务类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +public interface IAppAgentActivityParentInfoService { + + /** + * 根据活动ID获取参与的家长信息列表 + * + * @param activityId 活动ID + * @param agentId 代理商ID + * @param userId 用户ID + * @return 参与活动的家长信息列表 + */ + List getParentsByActivityAndAgent(Integer activityId, Integer agentId,Integer userId); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParticipantService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParticipantService.java index a24788c..7e3a46f 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParticipantService.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentActivityParticipantService.java @@ -17,10 +17,10 @@ public interface IAppAgentActivityParticipantService { /** * 根据活动ID和代理商ID获取参与记录 * - * @param activityId 活动ID - * @param agentId 代理商ID + * @param agentId 代理商ID + * @param userId 用户Id * @return 参与记录列表 */ - List getParticipantsByActivityAndAgent(Integer activityId, Integer agentId); + List getParticipantsByActivityAndAgent(Integer agentId,Integer userId); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentService.java new file mode 100644 index 0000000..7f868dd --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppAgentService.java @@ -0,0 +1,25 @@ +package com.seer.teach.mp.app.service; + +import com.seer.teach.mp.app.controller.resp.AppMpAgentResp; + +/** + * App端代理商服务接口 + */ +public interface IAppAgentService { + + /** + * 根据用户ID获取代理商响应对象 + * + * @param userId 用户ID + * @return 代理商响应对象 + */ + AppMpAgentResp getAgentRespByUserId(Integer userId); + + /** + * 根据用户ID获取代理商ID + * + * @param userId 用户ID + * @return 代理商ID + */ + Integer getAgentIdByUserId(Integer userId); +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppActivityServiceImpl.java similarity index 84% rename from seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java rename to seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppActivityServiceImpl.java index bfb14db..e238fff 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityServiceImpl.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppActivityServiceImpl.java @@ -7,9 +7,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.seer.teach.common.PageListBean; import com.seer.teach.common.utils.PageConverterUtils; import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; -import com.seer.teach.mp.app.controller.resp.AppAgentActivityResp; +import com.seer.teach.mp.app.controller.resp.AppActivityResp; import com.seer.teach.mp.app.convert.AppAgentActivityConvert; -import com.seer.teach.mp.app.service.IAppAgentActivityService; +import com.seer.teach.mp.app.service.IAppActivityService; import com.seer.teach.mp.entity.MpActivityEntity; import com.seer.teach.mp.service.IMpActivityService; import lombok.RequiredArgsConstructor; @@ -30,12 +30,12 @@ import java.util.Objects; @Slf4j @Service @RequiredArgsConstructor -public class AppAgentActivityServiceImpl implements IAppAgentActivityService { +public class AppActivityServiceImpl implements IAppActivityService { private final IMpActivityService activityService; @Override - public PageListBean pageList(AppAgentActivityQueryReq query,Integer agentId) { + public PageListBean pageList(AppAgentActivityQueryReq query, Integer agentId) { log.info("查询参数:{}", query); IPage page = new Page<>(query.getPageNo(), query.getPageSize()); var pageResult = activityService.page(page, new LambdaQueryWrapper<>(MpActivityEntity.class) @@ -49,7 +49,7 @@ public class AppAgentActivityServiceImpl implements IAppAgentActivityService { } @Override - public AppAgentActivityResp getById(Integer id) { + public AppActivityResp getById(Integer id) { MpActivityEntity entity = activityService.getById(id); return AppAgentActivityConvert.INSTANCE.convertToResp(entity); } diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParentInfoServiceImpl.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParentInfoServiceImpl.java new file mode 100644 index 0000000..363cf4d --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParentInfoServiceImpl.java @@ -0,0 +1,77 @@ +package com.seer.teach.mp.app.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.seer.teach.common.enums.ResultCodeEnum; +import com.seer.teach.common.exception.CommonException; +import com.seer.teach.mp.app.controller.resp.AgentActivityParentInfoResp; +import com.seer.teach.mp.app.service.IAppAgentActivityParentInfoService; +import com.seer.teach.mp.app.service.IAppAgentService; +import com.seer.teach.mp.entity.MpActivityInfoCollectionEntity; +import com.seer.teach.mp.service.IMpActivityInfoCollectionService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + *

+ * 代理商活动参与家长信息服务实现类 + *

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Slf4j +@Service +@AllArgsConstructor +public class AppAgentActivityParentInfoServiceImpl implements IAppAgentActivityParentInfoService { + + private final IMpActivityInfoCollectionService activityInfoCollectionService; + private final IAppAgentService appAgentService; + + @Override + public List getParentsByActivityAndAgent(Integer activityId, Integer agentId,Integer userId) { + var userAgentId = appAgentService.getAgentIdByUserId(userId); + if (Objects.isNull(userAgentId)) { + return List.of(); + } + log.info("userAgentId:{}", userAgentId); + if(userAgentId.intValue() != agentId){ + throw new CommonException(ResultCodeEnum.RELATION_NOT_FOUND); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MpActivityInfoCollectionEntity::getActivityId, activityId) + .eq(MpActivityInfoCollectionEntity::getAgentId, agentId); + + // 查询所有符合条件的记录 + List entities = activityInfoCollectionService.list(queryWrapper); + + // 转换为响应对象列表 + return entities.stream() + .map(this::convertToResp) + .collect(Collectors.toList()); + } + + private AgentActivityParentInfoResp convertToResp(MpActivityInfoCollectionEntity entity) { + AgentActivityParentInfoResp resp = new AgentActivityParentInfoResp(); + resp.setId(entity.getId()); + resp.setRelationId(entity.getRelationId()); + resp.setActivityId(entity.getActivityId()); + resp.setAgentId(entity.getAgentId()); + resp.setParentId(entity.getParentId()); + resp.setChildName(entity.getChildName()); + resp.setChildGender(entity.getChildGender()); + resp.setChildBirthDate(entity.getChildBirthDate()); + resp.setGrade(entity.getGrade()); + resp.setSchool(entity.getSchool()); + resp.setRegion(entity.getRegion()); + resp.setParentIdentity(entity.getParentIdentity()); + resp.setLearningSituation(entity.getLearningSituation()); + resp.setStrongSubjectIds(entity.getStrongSubjectIds()); + resp.setWeakSubjectIds(entity.getWeakSubjectIds()); + return resp; + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParticipantServiceImpl.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParticipantServiceImpl.java index f84fd72..540773e 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParticipantServiceImpl.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParticipantServiceImpl.java @@ -1,13 +1,18 @@ package com.seer.teach.mp.app.service.impl; import cn.hutool.core.collection.CollectionUtil; +import com.seer.teach.common.enums.ResultCodeEnum; +import com.seer.teach.common.exception.CommonException; import com.seer.teach.mp.app.controller.resp.AgentActivityParticipantResp; import com.seer.teach.mp.app.service.IAppAgentActivityParticipantService; +import com.seer.teach.mp.app.service.IAppAgentService; +import com.seer.teach.mp.entity.MpActivityEntity; import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import com.seer.teach.mp.service.IMpActivityService; import com.seer.teach.mp.service.IMpAgentActivityParticipantService; import com.seer.teach.user.api.UserInfoServiceApi; -import com.seer.teach.user.api.dto.UserInfoDTO; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; @@ -24,6 +29,7 @@ import java.util.stream.Collectors; * @author Lingma * @since 2025-12-30 */ +@Slf4j @Service @RequiredArgsConstructor public class AppAgentActivityParticipantServiceImpl implements IAppAgentActivityParticipantService { @@ -32,36 +38,45 @@ public class AppAgentActivityParticipantServiceImpl implements IAppAgentActivity private final UserInfoServiceApi userInfoServiceApi; + private final IAppAgentService appAgentService; + + private final IMpActivityService mpActivityService; + @Override - public List getParticipantsByActivityAndAgent(Integer activityId, Integer agentId) { - var participants = agentActivityParticipantService.getParticipantsByActivityAndAgent(activityId, agentId); + public List getParticipantsByActivityAndAgent(Integer agentId, Integer userId) { + var userAgentId = appAgentService.getAgentIdByUserId(userId); + if (Objects.isNull(userAgentId)) { + return List.of(); + } + log.info("userAgentId:{}", userAgentId); + if(userAgentId.intValue() != agentId){ + throw new CommonException(ResultCodeEnum.RELATION_NOT_FOUND); + } + var participants = agentActivityParticipantService.getListByAgentId(agentId); if (CollectionUtil.isEmpty(participants)) { return List.of(); } - // 提取家长ID - Set parentIds = participants.stream().map(MpAgentActivityParticipantEntity::getParentId).collect(Collectors.toSet()); + Set activityIds = participants.stream().map(MpAgentActivityParticipantEntity::getActivityId).collect(Collectors.toSet()); - List parentInfos = userInfoServiceApi.getListByUserIds(parentIds); + List parentInfos = mpActivityService.listByIds(activityIds); - var parentInfoMap = parentInfos.stream().collect(Collectors.toMap(UserInfoDTO::getId, parentInfo -> parentInfo)); + var activityInfoMap = parentInfos.stream().collect(Collectors.toMap(MpActivityEntity::getId, activity -> activity)); return participants.stream() - .map(entity -> convertToDto(entity, parentInfoMap)) + .map(entity -> convertToDto(entity, activityInfoMap)) .collect(Collectors.toList()); } - - private AgentActivityParticipantResp convertToDto(MpAgentActivityParticipantEntity entity, Map parentInfoMap) { + private AgentActivityParticipantResp convertToDto(MpAgentActivityParticipantEntity entity, Map activityInfoMap) { AgentActivityParticipantResp resp = new AgentActivityParticipantResp(); resp.setId(entity.getId()); resp.setActivityId(entity.getActivityId()); resp.setAgentId(entity.getAgentId()); - resp.setParentId(entity.getParentId()); - UserInfoDTO userInfoDTO = parentInfoMap.get(entity.getParentId()); - if(Objects.nonNull(userInfoDTO)){ - resp.setParentMobile(userInfoDTO.getMobile()); + MpActivityEntity activity = activityInfoMap.get(entity.getActivityId()); + if(Objects.nonNull(activity)){ + resp.setActivityName(activity.getActivityName()); } return resp; } diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentServiceImpl.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentServiceImpl.java new file mode 100644 index 0000000..cc0e587 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentServiceImpl.java @@ -0,0 +1,44 @@ +package com.seer.teach.mp.app.service.impl; + +import com.seer.teach.mp.app.controller.resp.AppMpAgentResp; +import com.seer.teach.mp.app.service.IAppAgentService; +import com.seer.teach.mp.entity.MpAgentEmployeeRelationEntity; +import com.seer.teach.mp.entity.MpAgentEntity; +import com.seer.teach.mp.service.IMpAgentEmployeeRelationService; +import com.seer.teach.mp.service.IMpAgentService; +import lombok.RequiredArgsConstructor; +import com.seer.teach.mp.app.convert.AppAgentConvert; +import org.springframework.stereotype.Service; + +/** + * App端代理商服务实现类 + */ +@Service +@RequiredArgsConstructor +public class AppAgentServiceImpl implements IAppAgentService { + + private final IMpAgentService mpAgentService; + private final IMpAgentEmployeeRelationService mpAgentEmployeeRelationService; + + @Override + public AppMpAgentResp getAgentRespByUserId(Integer userId) { + MpAgentEmployeeRelationEntity mpAgentEmployeeRelationEntity = mpAgentEmployeeRelationService.getOneByUserId(userId); + if (mpAgentEmployeeRelationEntity == null) { + return null; + } + MpAgentEntity agentEntity = mpAgentService.getAgentById(mpAgentEmployeeRelationEntity.getAgentId()); + if (agentEntity == null) { + return null; + } + return AppAgentConvert.INSTANCE.entityToResp(agentEntity); + } + + @Override + public Integer getAgentIdByUserId(Integer userId) { + MpAgentEmployeeRelationEntity mpAgentEmployeeRelationEntity = mpAgentEmployeeRelationService.getOneByUserId(userId); + if (mpAgentEmployeeRelationEntity == null) { + return null; + } + return mpAgentEmployeeRelationEntity.getAgentId(); + } +} \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java index 4fddc20..9bba32e 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java @@ -3,6 +3,8 @@ package com.seer.teach.mp.service; import com.baomidou.mybatisplus.extension.service.IService; import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import java.util.List; + /** *

* 代理商活动参与记录表 服务类 @@ -21,4 +23,12 @@ public interface IMpAgentActivityParticipantService extends IService getListByAgentId(Integer agentId); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentEmployeeRelationService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentEmployeeRelationService.java index b75e157..fd7a546 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentEmployeeRelationService.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentEmployeeRelationService.java @@ -55,4 +55,12 @@ public interface IMpAgentEmployeeRelationService extends IService { + /** + * 根据ID获取代理商信息 + * + * @param id 代理商ID + * @return 代理商实体 + */ + MpAgentEntity getAgentById(Integer id); + /** + * 保存代理商 + * + * @param agentEntity 代理商实体 + * @return 是否成功 + */ + Boolean saveAgent(MpAgentEntity agentEntity); + + /** + * 更新代理商 + * + * @param agentEntity 代理商实体 + * @return 是否成功 + */ + Boolean updateAgent(MpAgentEntity agentEntity); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java index ae0b59a..280c5fb 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java @@ -1,13 +1,8 @@ package com.seer.teach.mp.service.impl; -import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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.seer.teach.common.utils.AssertUtils; import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; -import com.seer.teach.mp.exception.AgentActivityErrorCodeEnum; import com.seer.teach.mp.mapper.MpAgentActivityParticipantMapper; import com.seer.teach.mp.service.IMpAgentActivityLogService; import com.seer.teach.mp.service.IMpAgentActivityParticipantService; @@ -15,7 +10,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.time.LocalDateTime; import java.util.List; /** @@ -42,4 +36,10 @@ public class MpAgentActivityParticipantServiceImpl extends ServiceImpl getListByAgentId(Integer agentId) { + return super.list(new LambdaQueryWrapper() + .eq(MpAgentActivityParticipantEntity::getAgentId, agentId)); + } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentEmployeeRelationServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentEmployeeRelationServiceImpl.java index 96bdeac..3d24be3 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentEmployeeRelationServiceImpl.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentEmployeeRelationServiceImpl.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.seer.teach.common.enums.ResultCodeEnum; +import com.seer.teach.common.exception.CommonException; import com.seer.teach.mp.entity.MpAgentEmployeeRelationEntity; import com.seer.teach.mp.mapper.MpAgentEmployeeRelationMapper; import com.seer.teach.mp.service.IMpAgentEmployeeRelationService; @@ -50,29 +52,20 @@ public class MpAgentEmployeeRelationServiceImpl extends ServiceImpl checkWrapper = + LambdaQueryWrapper checkWrapper = new LambdaQueryWrapper() .eq(MpAgentEmployeeRelationEntity::getAgentId, entity.getAgentId()) .eq(MpAgentEmployeeRelationEntity::getEmployeeUserId, entity.getEmployeeUserId()); - long count = this.count(checkWrapper); + long count = super.count(checkWrapper); if (count > 0) { - throw new com.seer.teach.mp.exception.AgentActivityException( - com.seer.teach.mp.exception.AgentActivityErrorCodeEnum.PARTICIPATION_FAILED, - "员工已关联到代理商" - ); + throw new CommonException(ResultCodeEnum.AGENT_EMPLOYEE_ALREADY_EXISTS); } - - // 新增时设置创建时间 entity.setCreateTime(LocalDateTime.now()); } entity.setUpdateTime(LocalDateTime.now()); - return this.saveOrUpdate(entity); + return super.saveOrUpdate(entity); } @Override @@ -87,7 +80,7 @@ public class MpAgentEmployeeRelationServiceImpl extends ServiceImpl 0; + return super.count(queryWrapper) > 0; } - /** - * 验证关联数据 - */ - private void validateRelation(MpAgentEmployeeRelationEntity entity) { - com.seer.teach.common.utils.AssertUtils.notNull(entity.getAgentId(), - com.seer.teach.mp.exception.AgentActivityErrorCodeEnum.INVALID_AGENT, "代理商ID不能为空"); - com.seer.teach.common.utils.AssertUtils.notNull(entity.getEmployeeUserId(), - com.seer.teach.mp.exception.AgentActivityErrorCodeEnum.PARENT_NOT_FOUND, "员工用户ID不能为空"); + @Override + public MpAgentEmployeeRelationEntity getOneByUserId(Integer userId) { + return super.getOne(new LambdaQueryWrapper<>(MpAgentEmployeeRelationEntity.class).eq(MpAgentEmployeeRelationEntity::getEmployeeUserId, userId)); } } \ No newline at end of file diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java index f6b540e..50ac091 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java @@ -12,4 +12,18 @@ import org.springframework.stereotype.Service; @Service public class MpAgentServiceImpl extends ServiceImpl implements IMpAgentService { + @Override + public MpAgentEntity getAgentById(Integer id) { + return this.getById(id); + } + + @Override + public Boolean saveAgent(MpAgentEntity agentEntity) { + return this.save(agentEntity); + } + + @Override + public Boolean updateAgent(MpAgentEntity agentEntity) { + return this.updateById(agentEntity); + } } \ No newline at end of file From c0fdf7dfd1441fd8eb15d7522db4bc7e9548f519 Mon Sep 17 00:00:00 2001 From: Wang Date: Tue, 30 Dec 2025 18:26:40 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=EF=BC=8C=E6=B4=BB=E5=8A=A8=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E5=91=98=E5=B7=A5=E5=85=B3=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E6=B4=BB=E5=8A=A8=E5=8F=82=E4=B8=8E=E8=80=85=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/utils/PageConverterUtils.java | 48 ++++++++++++--- .../mp/entity/MpAgentActivityLogEntity.java | 2 +- .../resp/AdminAgentActivityLogResp.java | 2 +- .../mp/admin/service/AdminAgentService.java | 7 ++- .../AdminAgentActivityLogServiceImpl.java | 8 +-- ...inAgentActivityParticipantServiceImpl.java | 8 +-- .../service/IMpAgentActivityLogService.java | 2 +- .../teach/mp/service/IMpAgentService.java | 4 -- .../service/impl/MpActivityServiceImpl.java | 60 ++----------------- .../impl/MpAgentActivityLogServiceImpl.java | 2 +- 10 files changed, 57 insertions(+), 86 deletions(-) diff --git a/seer-common/common-utils/src/main/java/com/seer/teach/common/utils/PageConverterUtils.java b/seer-common/common-utils/src/main/java/com/seer/teach/common/utils/PageConverterUtils.java index 60c4bdd..c44a08b 100644 --- a/seer-common/common-utils/src/main/java/com/seer/teach/common/utils/PageConverterUtils.java +++ b/seer-common/common-utils/src/main/java/com/seer/teach/common/utils/PageConverterUtils.java @@ -17,27 +17,57 @@ public class PageConverterUtils { * 将MyBatis-Plus的IPage分页结果转换为目标分页Bean * 使用示例: * - * IPage iPage = goodsService.queryPageList(size, current, goods); - * PageListBean result = PageConverterUtils.convertPageListBean(iPage, GoodConverter.INSTANCE::list); + * IPage iPage = goodsService.queryPageList(size, current, goods); + * PageListBean result = PageConverterUtils.convertPageListBean(iPage, GoodConverter.INSTANCE::list); * - * + *

* 通用分页对象转换方法 - * @param sourcePage MyBatis Plus 分页对象 - * @param converter 数据转换函数 (如 GoodConverter.INSTANCE::list) - * @param 源数据类型 + * + * @param sourcePage MyBatis Plus 分页对象 + * @param converter 数据转换函数 (如 GoodConverter.INSTANCE::list) + * @param 源数据类型 * @return PageListBean 自定义分页响应对象 */ public static PageListBean convertPageListBean( IPage sourcePage, Function, List> converter) { PageListBean result = new PageListBean<>(); - if(null == sourcePage || sourcePage.getRecords() == null || sourcePage.getRecords().isEmpty()){ + if (null == sourcePage || sourcePage.getRecords() == null || sourcePage.getRecords().isEmpty()) { return result; } // 应用转换函数 result.setList(converter.apply(sourcePage.getRecords())); - result.setPageSize((int) sourcePage.getSize()); - result.setTotalPage((int) sourcePage.getPages()); + result.setPageSize(sourcePage.getSize()); + result.setTotalPage(sourcePage.getPages()); + result.setTotal(sourcePage.getTotal()); + return result; + } + + /** + * 分页数据转换方法 + * 将MyBatis-Plus的IPage分页结果转换为目标分页Bean + * 使用示例: + * + * IPage iPage = goodsService.queryPageList(size, current, goods); + * PageListBean result = PageConverterUtils.convertPageList(iPage, GoodConverter.INSTANCE::one); + * + *

+ * 通用分页对象转换方法 + * @param sourcePage MyBatis Plus 分页对象 + * @param converter 数据转换函数 (如 GoodConverter.INSTANCE::one) + * @param 源数据类型 + * @return PageListBean 自定义分页响应对象 + */ + public static PageListBean convertPageList( + IPage sourcePage, + Function converter) { + PageListBean result = new PageListBean<>(); + if (null == sourcePage || sourcePage.getRecords() == null || sourcePage.getRecords().isEmpty()) { + return result; + } + result.setList(sourcePage.getRecords().stream().map(converter).toList()); + result.setPageSize(sourcePage.getSize()); + result.setTotalPage(sourcePage.getPages()); result.setTotal(sourcePage.getTotal()); return result; } diff --git a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityLogEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityLogEntity.java index 54ba400..19d1986 100644 --- a/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityLogEntity.java +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityLogEntity.java @@ -32,7 +32,7 @@ public class MpAgentActivityLogEntity extends BaseEntity { * 操作人ID */ @TableField("operator_id") - private Integer operatorId; + private String operatorId; /** * 操作类型 diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityLogResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityLogResp.java index a91b759..2fb7315 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityLogResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminAgentActivityLogResp.java @@ -23,7 +23,7 @@ public class AdminAgentActivityLogResp { private Integer activityId; @Schema(description = "操作人ID") - private Integer operatorId; + private String operatorId; @Schema(description = "操作类型") private String operationType; diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminAgentService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminAgentService.java index 1de25bb..dd4b521 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminAgentService.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminAgentService.java @@ -1,5 +1,6 @@ package com.seer.teach.mp.admin.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.seer.teach.common.PageListBean; @@ -11,6 +12,7 @@ import com.seer.teach.mp.entity.MpAgentEntity; import com.seer.teach.mp.service.IMpAgentService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.List; @@ -32,7 +34,10 @@ public class AdminAgentService { Page pageParam = new Page<>(pageReq.getPageNo(), pageReq.getPageSize()); MpAgentEntity query = AgentConvert.INSTANCE.convertOne(pageReq); - IPage resultPage = mpAgentService.pageList(pageParam, query); + IPage resultPage = mpAgentService.page(pageParam, new LambdaQueryWrapper<>(MpAgentEntity.class) + .like(StringUtils.isNotBlank(query.getAgentName()), MpAgentEntity::getAgentName, query.getAgentName()) + .like(StringUtils.isNotBlank(query.getContactName()), MpAgentEntity::getContactName, query.getContactName()) + .like(StringUtils.isNotBlank(query.getContactPhone()), MpAgentEntity::getContactPhone, query.getContactPhone())); return PageConverterUtils.convertPageListBean(resultPage, AgentConvert.INSTANCE::convertRespList); } diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityLogServiceImpl.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityLogServiceImpl.java index 287829f..6503df2 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityLogServiceImpl.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityLogServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.seer.teach.common.PageListBean; +import com.seer.teach.common.utils.PageConverterUtils; import com.seer.teach.mp.admin.controller.req.AgentActivityLogQueryReq; import com.seer.teach.mp.admin.controller.resp.AdminAgentActivityLogResp; import com.seer.teach.mp.admin.service.IAdminAgentActivityLogService; @@ -59,12 +60,7 @@ public class AdminAgentActivityLogServiceImpl implements IAdminAgentActivityLogS IPage result = mpAgentActivityLogService.page(page, wrapper); - // 转换为响应对象 - List records = result.getRecords().stream() - .map(this::convertToResp) - .toList(); - - return new PageListBean<>(result.getTotal(), records); + return PageConverterUtils.convertPageList(result, this::convertToResp); } @Override diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityParticipantServiceImpl.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityParticipantServiceImpl.java index a583ad5..55abe5b 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityParticipantServiceImpl.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityParticipantServiceImpl.java @@ -10,13 +10,9 @@ import com.seer.teach.mp.admin.controller.resp.AdminAgentActivityParticipantResp import com.seer.teach.mp.admin.convert.AdminAgentActivityParticipantConvert; import com.seer.teach.mp.admin.service.IAdminAgentActivityParticipantService; import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; -import com.seer.teach.mp.mapper.MpAgentActivityParticipantMapper; import com.seer.teach.mp.service.IMpAgentActivityParticipantService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; - -import java.util.List; /** *

@@ -57,8 +53,7 @@ public class AdminAgentActivityParticipantServiceImpl implements IAdminAgentActi // 检查是否已存在相同的活动、代理商和家长记录 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(MpAgentActivityParticipantEntity::getActivityId, entity.getActivityId()) - .eq(MpAgentActivityParticipantEntity::getAgentId, entity.getAgentId()) - .eq(MpAgentActivityParticipantEntity::getParentId, entity.getParentId()); + .eq(MpAgentActivityParticipantEntity::getAgentId, entity.getAgentId()); long count = mpAgentActivityParticipantService.count(wrapper); if (count > 0) { @@ -74,7 +69,6 @@ public class AdminAgentActivityParticipantServiceImpl implements IAdminAgentActi LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(MpAgentActivityParticipantEntity::getActivityId, entity.getActivityId()) .eq(MpAgentActivityParticipantEntity::getAgentId, entity.getAgentId()) - .eq(MpAgentActivityParticipantEntity::getParentId, entity.getParentId()) .ne(MpAgentActivityParticipantEntity::getId, entity.getId()); long count = mpAgentActivityParticipantService.count(wrapper); diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityLogService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityLogService.java index 3069e27..e94ea59 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityLogService.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityLogService.java @@ -24,6 +24,6 @@ public interface IMpAgentActivityLogService extends IService implements IMpActivityService { private final IMpAgentActivityParticipantService agentActivityParticipantService; - private final MpAgentActivityCache agentActivityCache; private final IMpAgentActivityLogService agentActivityLogService; @Override public boolean saveOrUpdateActivity(MpActivityEntity entity) { - // 验证活动数据 - validateActivity(entity); - MpActivityEntity oldEntity = null; String operationType = "创建"; @@ -65,7 +60,7 @@ public class MpActivityServiceImpl extends ServiceImpl participantWrapper = @@ -108,9 +83,6 @@ public class MpActivityServiceImpl extends ServiceImpl implements IMpAgentActivityLogService { @Override - public boolean logOperation(Integer activityId, Integer operatorId, String operationType, + public boolean logOperation(Integer activityId, String operatorId, String operationType, String description, String beforeData, String afterData) { try { MpAgentActivityLogEntity logEntity = new MpAgentActivityLogEntity(); From 14a17fb4e84d682bd8889e509fafa59d1c3ecca6 Mon Sep 17 00:00:00 2001 From: Wang Date: Wed, 31 Dec 2025 09:28:30 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=EF=BC=8C=E6=B4=BB=E5=8A=A8=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E5=91=98=E5=B7=A5=E5=85=B3=EF=BC=8C=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E6=B4=BB=E5=8A=A8=E5=8F=82=E4=B8=8E=E8=80=85=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teach/admin/config/AdminApiConfig.java | 8 +++++ .../V1.0.2__add_agent_activity_tables.sql | 31 ++++++++++--------- .../AppAgentActivityParentInfoController.java | 2 +- ...AppAgentActivityParticipantController.java | 4 +-- .../OfficialAccountLoginStrategy.java | 4 +-- 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/seer-admin/src/main/java/com/seer/teach/admin/config/AdminApiConfig.java b/seer-admin/src/main/java/com/seer/teach/admin/config/AdminApiConfig.java index 0764da5..7503e15 100644 --- a/seer-admin/src/main/java/com/seer/teach/admin/config/AdminApiConfig.java +++ b/seer-admin/src/main/java/com/seer/teach/admin/config/AdminApiConfig.java @@ -53,6 +53,14 @@ public class AdminApiConfig { .build(); } + @Bean + public GroupedOpenApi mpAdminApi() { + return GroupedOpenApi.builder() + .group("admin-mp") + .pathsToMatch("/mp/**") + .build(); + } + @Bean public GroupedOpenApi payAdminApi() { return GroupedOpenApi.builder() diff --git a/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql b/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql index 43e468a..78ca768 100644 --- a/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql +++ b/seer-mp/seer-mp-service-app-bootstrap/src/main/resources/db/mysql/V1.0.2__add_agent_activity_tables.sql @@ -1,5 +1,6 @@ -- 创建代理商表 -CREATE TABLE `mp_agents` ( +DROP TABLE IF EXISTS `mp_agent`; +CREATE TABLE `mp_agent` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '代理商ID', `agent_name` varchar(255) NOT NULL COMMENT '代理商名称', `agent_code` varchar(100) NOT NULL COMMENT '代理商编码', @@ -19,7 +20,8 @@ CREATE TABLE `mp_agents` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商表'; -- 创建代理商员工关联表 -CREATE TABLE `mp_agent_employee_relations` ( +DROP TABLE IF EXISTS `mp_agent_employee_relation`; +CREATE TABLE `mp_agent_employee_relation` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '关联ID', `agent_id` int NOT NULL COMMENT '代理商ID(对应user表的ID)', `employee_user_id` int NOT NULL COMMENT '员工用户ID(对应user表的ID)', @@ -38,7 +40,8 @@ CREATE TABLE `mp_agent_employee_relations` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商员工关联表'; -- 创建活动表 -CREATE TABLE `mp_activities` ( +DROP TABLE IF EXISTS `mp_activity`; +CREATE TABLE `mp_activity` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '活动ID', `activity_name` varchar(255) NOT NULL COMMENT '活动名称,如千人助学计划', `description` text COMMENT '活动描述', @@ -55,7 +58,8 @@ CREATE TABLE `mp_activities` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商活动表'; -- 创建代理商活动参与记录表 -CREATE TABLE `mp_agent_activity_participants` ( +DROP TABLE IF EXISTS `mp_agent_activity_participant`; +CREATE TABLE `mp_agent_activity_participant` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '参与记录ID', `activity_id` int NOT NULL COMMENT '活动ID', `agent_id` int NOT NULL COMMENT '代理商ID', @@ -66,11 +70,11 @@ CREATE TABLE `mp_agent_activity_participants` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` varchar(20) DEFAULT 'Default' COMMENT '租户id', PRIMARY KEY (`id`) USING BTREE, - KEY `idx_activity_agent` (`activity_id`, `agent_id`), - KEY `idx_parent_id` (`parent_id`) + KEY `idx_activity_agent` (`activity_id`, `agent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商活动参与记录表'; -- 创建代理商活动操作日志表 +DROP TABLE IF EXISTS `mp_agent_activity_log`; CREATE TABLE `mp_agent_activity_log` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '日志ID', `activity_id` int DEFAULT NULL COMMENT '活动ID', @@ -91,21 +95,21 @@ CREATE TABLE `mp_agent_activity_log` ( KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理商活动操作日志表'; - +DROP TABLE IF EXISTS `mp_parent_agent_activity_relation`; CREATE TABLE `mp_parent_agent_activity_relation` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '关系ID', `activity_id` int NOT NULL COMMENT '活动ID', `agent_id` int NOT NULL COMMENT '代理商ID', `parent_id` int NOT NULL COMMENT '家长ID', - `activity_name` varchar(255) NOT NULL COMMENT '活动名称(冗余字段)', - `agent_name` varchar(255) NOT NULL COMMENT '代理商名称(冗余字段)', + `activity_name` varchar(255) NULL COMMENT '活动名称(冗余字段)', + `agent_name` varchar(255) NULL COMMENT '代理商名称(冗余字段)', `status` tinyint NOT NULL DEFAULT '1' COMMENT '参与状态:0-取消参与,1-正常参与', `sign_up_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '报名时间', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '创建人', `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NULL DEFAULT NULL COMMENT '修改人', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `deleted` bit(1) NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` varchar(20) DEFAULT 'Default' COMMENT '租户id', PRIMARY KEY (`id`) USING BTREE, KEY `idx_activity_id` (`activity_id`), @@ -114,13 +118,12 @@ CREATE TABLE `mp_parent_agent_activity_relation` ( KEY `idx_sign_up_time` (`sign_up_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='家长参与代理商活动关系表'; - +DROP TABLE IF EXISTS `mp_activity_info_collection`; CREATE TABLE `mp_activity_info_collection` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '信息收集ID', - `relation_id` int NOT NULL COMMENT '关系ID', + `relation_id` int NOT NULL COMMENT '关联的家长参与代理商活动关系ID', `activity_id` int NOT NULL COMMENT '活动ID', `parent_id` int NOT NULL COMMENT '家长ID', - `relation_id` int COMMENT '关联的家长参与代理商活动关系ID', `child_name` varchar(100) COMMENT '孩子姓名', `child_gender` varchar(10) COMMENT '孩子性别(M-男,F-女)', `child_birth_date` date COMMENT '出生年月', diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParentInfoController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParentInfoController.java index bcd4568..9841036 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParentInfoController.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParentInfoController.java @@ -26,7 +26,7 @@ import java.util.List; * @author Lingma * @since 2025-12-30 */ -@Tag(name = "APP - 代理商活动参与家长信息") +@Tag(name = "APP - 参与代理商活动家长信息") @RestController @RequestMapping("/app/agent/activity/parent-info") @LogPrint diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java index 87400e6..3f7af26 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java @@ -20,13 +20,13 @@ import java.util.List; /** *

- * 代理商活动参与记录App控制器 + * 代理商参与活动记录App控制器 *

* * @author Lingma * @since 2025-12-29 */ -@Tag(name = "APP - 代理商活动参与记录") +@Tag(name = "APP - 代理商参与活动记录") @RestController @RequestMapping("/app/agent/activity/participant") @LogPrint diff --git a/seer-user/seer-user-service-app/src/main/java/com/seer/teach/user/app/auth/service/strategy/OfficialAccountLoginStrategy.java b/seer-user/seer-user-service-app/src/main/java/com/seer/teach/user/app/auth/service/strategy/OfficialAccountLoginStrategy.java index e7b8670..e8f8b9a 100644 --- a/seer-user/seer-user-service-app/src/main/java/com/seer/teach/user/app/auth/service/strategy/OfficialAccountLoginStrategy.java +++ b/seer-user/seer-user-service-app/src/main/java/com/seer/teach/user/app/auth/service/strategy/OfficialAccountLoginStrategy.java @@ -62,8 +62,6 @@ public class OfficialAccountLoginStrategy extends AbstractLoginStrategy implemen userAuth.setAppId(request.getAppId()); updateUserAuth(userAuth); } - Integer status = wechatOfficialAccountApi.getDealerApplicationsApplyStatusByUserId(userAuth.getUserId()); - log.info("获取用户状态:{}",status); - return new LoginUser(userAuth.getUserId(),status == null ? -1 : status); + return new LoginUser(userAuth.getUserId()); } } \ No newline at end of file