From e44abef9dc287f19ca71ab6ae484cd9e307ba8f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=98=89=E5=A4=9A=E5=AE=9D=E5=AE=9D?= Date: Wed, 7 Jan 2026 16:18:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=AE=A1=E7=90=86=E7=AB=AF=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8=E4=BF=A1=E6=81=AF=E6=94=B6=E9=9B=86=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=92=8C=E5=AE=B6=E9=95=BF=E5=8F=82=E4=B8=8E=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=95=86=E6=B4=BB=E5=8A=A8=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MpActivityInfoCollectionEntity.java | 27 ++---- .../MpParentAgentActivityRelationEntity.java | 2 +- ...AdminActivityInfoCollectionController.java | 50 ++++++++++ .../AdminParentAgentActivityController.java | 18 ++-- .../req/ActivityInfoCollectionQueryReq.java | 37 ++++++++ .../resp/AdminActivityInfoCollectionResp.java | 95 +++++++++++++++++++ .../resp/AdminParentAgentActivityResp.java | 4 + .../AdminActivityInfoCollectionConvert.java | 18 ++++ .../AdminParentAgentActivityConvert.java | 1 + .../AdminActivityInfoCollectionService.java | 62 ++++++++++++ .../AdminParentAgentActivityService.java | 7 +- .../V1.0.2__add_agent_activity_tables.sql | 1 + 12 files changed, 294 insertions(+), 28 deletions(-) create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityInfoCollectionController.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/ActivityInfoCollectionQueryReq.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityInfoCollectionResp.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityInfoCollectionConvert.java create mode 100644 seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminActivityInfoCollectionService.java 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 index 3339512..512baa6 100644 --- 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 @@ -2,16 +2,12 @@ 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; /** *

@@ -33,18 +29,18 @@ public class MpActivityInfoCollectionEntity extends BaseEntity { @TableField("relation_id") private Integer relationId; - /** - * 活动ID - */ - @TableField("activity_id") - private Integer activityId; - /** * 代理商ID */ @TableField("agent_id") private Integer agentId; + /** + * 活动ID + */ + @TableField("activity_id") + private Integer activityId; + /** * 家长ID */ @@ -100,14 +96,9 @@ public class MpActivityInfoCollectionEntity extends BaseEntity { private String learningSituation; /** - * 优势学科(数学、英语等) + * 偏科(数学、英语等) */ - @TableField(value = "strong_subject_ids",typeHandler = IntegerListTypeHandler.class) - private List strongSubjectIds; + @TableField("weak_subject") + private String weakSubject; - /** - * 劣势学科(数学、英语等) - */ - @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 index e477fcd..49d0043 100644 --- 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 @@ -19,7 +19,7 @@ import java.time.LocalDateTime; */ @Getter @Setter -@TableName("mp_parent_agent_activity_relations") +@TableName("mp_parent_agent_activity_relation") @Schema(name = "MpParentAgentActivityRelationEntity对象", description = "家长参与代理商活动关系表") public class MpParentAgentActivityRelationEntity extends BaseEntity { diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityInfoCollectionController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityInfoCollectionController.java new file mode 100644 index 0000000..b4ac6b7 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityInfoCollectionController.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.ActivityInfoCollectionQueryReq; +import com.seer.teach.mp.admin.controller.resp.AdminActivityInfoCollectionResp; +import com.seer.teach.mp.admin.service.AdminActivityInfoCollectionService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Tag(name = "管理端 - 活动信息收集管理") +@LogPrint +@RequiredArgsConstructor +@RestController +@RequestMapping("/mp/activity/info/collection") +public class AdminActivityInfoCollectionController { + + private final AdminActivityInfoCollectionService adminActivityInfoCollectionService; + + @PostMapping("/page") + @SaCheckPermission("admin:activity:info:collection:page") + @Operation(summary = "分页查询活动信息收集记录") + public ResultBean> pageList( + @RequestBody @Validated ActivityInfoCollectionQueryReq req) { + PageListBean result = adminActivityInfoCollectionService.pageList(req); + return ResultBean.success(result); + } + + + @GetMapping("/{id}") + @SaCheckPermission("admin:activity:info:collection:detail") + @Operation(summary = "获取活动信息收集记录详情") + public ResultBean detail(@PathVariable Integer id) { + return ResultBean.success(adminActivityInfoCollectionService.getDetail(id)); + } + + @PostMapping("delete") + @SaCheckPermission("admin:activity:info:collection:delete") + @Operation(summary = "删除活动信息收集记录") + public ResultBean delete(@RequestBody List ids) { + return ResultBean.success(adminActivityInfoCollectionService.delete(ids)); + } +} 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 index 83205dd..dc3e104 100644 --- 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 @@ -1,30 +1,26 @@ 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.*; +import java.util.List; + /** * 家长参与代理商活动控制器 - 管理端 */ @Tag(name = "管理端 - 家长参与代理商活动管理") @AllArgsConstructor @RestController -@RequestMapping("/mp/admin/parent/agent/activity") +@RequestMapping("/mp/parent/agent/activity") public class AdminParentAgentActivityController { private final AdminParentAgentActivityService adminParentAgentActivityService; @@ -45,4 +41,12 @@ public class AdminParentAgentActivityController { public ResultBean detail(@PathVariable Integer id) { return ResultBean.success(adminParentAgentActivityService.getDetail(id)); } + + @PostMapping("delete") + @SaCheckPermission("admin:parent:agent:activity:delete") + @Operation(summary = "删除家长参与代理商活动记录") + @LogPrint + public ResultBean delete(@RequestBody List ids) { + return ResultBean.success(adminParentAgentActivityService.delete(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/req/ActivityInfoCollectionQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/ActivityInfoCollectionQueryReq.java new file mode 100644 index 0000000..c3e2173 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/ActivityInfoCollectionQueryReq.java @@ -0,0 +1,37 @@ +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; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +@Schema(description = "活动信息收集查询请求") +public class ActivityInfoCollectionQueryReq extends PageRequest { + + /** + * 孩子姓名 + */ + @Schema(description = "孩子姓名") + private String childName; + + /** + * 孩子性别(M-男,F-女) + */ + @Schema(description = "孩子性别") + private String childGender; + + /** + * 年级 + */ + @Schema(description = "年级") + private String grade; + + /** + * 学校 + */ + @Schema(description = "学校") + private String school; + +} diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityInfoCollectionResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityInfoCollectionResp.java new file mode 100644 index 0000000..66b28c5 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityInfoCollectionResp.java @@ -0,0 +1,95 @@ +package com.seer.teach.mp.admin.controller.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +@Schema(name = "AdminActivityInfoCollectionResp", description = "活动信息收集响应参数") +public class AdminActivityInfoCollectionResp { + + private Integer id; + + /** + * 关联的家长参与代理商活动关系ID + */ + @Schema(description = "关联的家长参与代理商活动关系ID") + private Integer relationId; + + @Schema(description = "代理商ID") + private Integer agentId; + + /** + * 活动ID + */ + @Schema(description = "活动ID") + private Integer activityId; + + /** + * 家长ID + */ + @Schema(description = "家长ID") + private Integer parentId; + + /** + * 孩子姓名 + */ + @Schema(description = "孩子姓名") + private String childName; + + /** + * 孩子性别(M-男,F-女) + */ + @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; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; +} 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 index 0a7b152..d41a34b 100644 --- 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 @@ -42,4 +42,8 @@ public class AdminParentAgentActivityResp { @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/AdminActivityInfoCollectionConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityInfoCollectionConvert.java new file mode 100644 index 0000000..a4a663d --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityInfoCollectionConvert.java @@ -0,0 +1,18 @@ +package com.seer.teach.mp.admin.convert; + +import com.seer.teach.mp.admin.controller.resp.AdminActivityInfoCollectionResp; +import com.seer.teach.mp.entity.MpActivityInfoCollectionEntity; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface AdminActivityInfoCollectionConvert { + + AdminActivityInfoCollectionConvert INSTANCE = Mappers.getMapper(AdminActivityInfoCollectionConvert.class); + + AdminActivityInfoCollectionResp convertToResp(MpActivityInfoCollectionEntity entity); + + List convertToRespList(List entity); +} 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 index ff236ad..265bb19 100644 --- 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 @@ -7,6 +7,7 @@ import org.mapstruct.factory.Mappers; import java.util.List; +@org.mapstruct.Mapper @Mapper public interface AdminParentAgentActivityConvert { diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminActivityInfoCollectionService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminActivityInfoCollectionService.java new file mode 100644 index 0000000..4648453 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminActivityInfoCollectionService.java @@ -0,0 +1,62 @@ +package com.seer.teach.mp.admin.service; + +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.controller.req.ActivityInfoCollectionQueryReq; +import com.seer.teach.mp.admin.controller.resp.AdminActivityInfoCollectionResp; +import com.seer.teach.mp.admin.convert.AdminActivityInfoCollectionConvert; +import com.seer.teach.mp.entity.MpActivityInfoCollectionEntity; +import com.seer.teach.mp.service.IMpActivityInfoCollectionService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; + +@Service +@Slf4j +@RequiredArgsConstructor +public class AdminActivityInfoCollectionService { + + private final IMpActivityInfoCollectionService mpActivityInfoCollectionService; + + /** + * 分页查询活动信息收集记录 + * + * @param req 查询参数 + * @return 分页结果 + */ + public PageListBean pageList(ActivityInfoCollectionQueryReq req) { + Page page = new Page<>(req.getPageNo(), req.getPageSize()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(Objects.nonNull(req.getChildName()) && !req.getChildName().isEmpty(), MpActivityInfoCollectionEntity::getChildName, req.getChildName()) + .like(Objects.nonNull(req.getGrade()) && !req.getGrade().isEmpty(), MpActivityInfoCollectionEntity::getGrade, req.getGrade()) + .like(Objects.nonNull(req.getSchool()) && !req.getSchool().isEmpty(), MpActivityInfoCollectionEntity::getSchool, req.getSchool()) + .like(Objects.nonNull(req.getChildGender()) && !req.getChildGender().isEmpty(), MpActivityInfoCollectionEntity::getChildGender, req.getChildGender()) + .orderByDesc(MpActivityInfoCollectionEntity::getCreateTime); + Page result = mpActivityInfoCollectionService.page(page, wrapper); + return PageConverterUtils.convertPageListBean(result, AdminActivityInfoCollectionConvert.INSTANCE::convertToRespList); + } + + /** + * 获取活动信息收集记录详情 + * @param id 记录ID + * @return 详情 + */ + public AdminActivityInfoCollectionResp getDetail(Integer id) { + MpActivityInfoCollectionEntity entity = mpActivityInfoCollectionService.getById(id); + return AdminActivityInfoCollectionConvert.INSTANCE.convertToResp(entity); + } + + /** + * 删除活动信息收集记录 + * @param ids 删除的ID列表 + * @return 删除结果 + */ + public boolean delete(List ids) { + return mpActivityInfoCollectionService.removeByIds(ids); + } +} 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 index 175e5c5..02b2341 100644 --- 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 @@ -4,11 +4,9 @@ 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; @@ -16,6 +14,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Objects; @RequiredArgsConstructor @@ -47,4 +46,8 @@ public class AdminParentAgentActivityService { MpParentAgentActivityRelationEntity entity = parentAgentActivityRelationService.getById(id); return AdminParentAgentActivityConvert.INSTANCE.convertToResp(entity); } + + public boolean delete(List ids) { + return parentAgentActivityRelationService.removeByIds(ids); + } } 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 7eba33a..60928f4 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 @@ -126,6 +126,7 @@ 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', + `agent_id` int NOT NULL COMMENT '代理商ID', `activity_id` int NOT NULL COMMENT '活动ID', `parent_id` int NOT NULL COMMENT '家长ID', `child_name` varchar(100) COMMENT '孩子姓名',