feat:管理端活动信息收集管理和家长参与代理商活动管理

This commit is contained in:
嘉多宝宝 2026-01-07 16:18:18 +08:00
parent 495ce97ce7
commit e44abef9dc
12 changed files with 294 additions and 28 deletions

View File

@ -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;
/**
* <p>
@ -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<Integer> strongSubjectIds;
@TableField("weak_subject")
private String weakSubject;
/**
* 劣势学科(数学英语等)
*/
@TableField(value = "weak_subject_ids",typeHandler = IntegerListTypeHandler.class)
private List<Integer> weakSubjectIds;
}

View File

@ -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 {

View File

@ -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<PageListBean<AdminActivityInfoCollectionResp>> pageList(
@RequestBody @Validated ActivityInfoCollectionQueryReq req) {
PageListBean<AdminActivityInfoCollectionResp> result = adminActivityInfoCollectionService.pageList(req);
return ResultBean.success(result);
}
@GetMapping("/{id}")
@SaCheckPermission("admin:activity:info:collection:detail")
@Operation(summary = "获取活动信息收集记录详情")
public ResultBean<AdminActivityInfoCollectionResp> detail(@PathVariable Integer id) {
return ResultBean.success(adminActivityInfoCollectionService.getDetail(id));
}
@PostMapping("delete")
@SaCheckPermission("admin:activity:info:collection:delete")
@Operation(summary = "删除活动信息收集记录")
public ResultBean<Boolean> delete(@RequestBody List<Integer> ids) {
return ResultBean.success(adminActivityInfoCollectionService.delete(ids));
}
}

View File

@ -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<AdminParentAgentActivityResp> detail(@PathVariable Integer id) {
return ResultBean.success(adminParentAgentActivityService.getDetail(id));
}
@PostMapping("delete")
@SaCheckPermission("admin:parent:agent:activity:delete")
@Operation(summary = "删除家长参与代理商活动记录")
@LogPrint
public ResultBean<Boolean> delete(@RequestBody List<Integer> ids) {
return ResultBean.success(adminParentAgentActivityService.delete(ids));
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<AdminActivityInfoCollectionResp> convertToRespList(List<MpActivityInfoCollectionEntity> entity);
}

View File

@ -7,6 +7,7 @@ import org.mapstruct.factory.Mappers;
import java.util.List;
@org.mapstruct.Mapper
@Mapper
public interface AdminParentAgentActivityConvert {

View File

@ -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<AdminActivityInfoCollectionResp> pageList(ActivityInfoCollectionQueryReq req) {
Page<MpActivityInfoCollectionEntity> page = new Page<>(req.getPageNo(), req.getPageSize());
LambdaQueryWrapper<MpActivityInfoCollectionEntity> 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<MpActivityInfoCollectionEntity> 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<Integer> ids) {
return mpActivityInfoCollectionService.removeByIds(ids);
}
}

View File

@ -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<Integer> ids) {
return parentAgentActivityRelationService.removeByIds(ids);
}
}

View File

@ -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 '孩子姓名',