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-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..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 @@ -319,7 +319,24 @@ 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_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, "活动未开始或已结束"), + 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-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-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/MpActivityEntity.java b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpActivityEntity.java new file mode 100644 index 0000000..037b524 --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpActivityEntity.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 MpActivityEntity 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/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/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..19d1986 --- /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 String 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..821d79d --- /dev/null +++ b/seer-mp/seer-mp-data-module/src/main/java/com/seer/teach/mp/entity/MpAgentActivityParticipantEntity.java @@ -0,0 +1,35 @@ +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; +} \ 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/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/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..a624f70 --- /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.MpActivityEntity; +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-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/AdminActivityController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityController.java new file mode 100644 index 0000000..2cbb360 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityController.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.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; +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 AdminActivityController { + + private final IAdminActivityService agentActivityService; + + @Operation(summary = "活动列表") + @GetMapping("/page-list") + @SaCheckPermission("mp:admin:agent:activity:list") + public ResultBean> pageList(MpActivityQueryReq query) { + return ResultBean.success(agentActivityService.pageList(query)); + } + + @Operation(summary = "创建或更新活动") + @PostMapping("/save") + @SaCheckPermission("mp:admin:agent:activity:save") + public ResultBean save(@Valid @RequestBody MpActivityReq 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) { + 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/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/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/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/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/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/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/admin/controller/req/MpActivityQueryReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpActivityQueryReq.java new file mode 100644 index 0000000..5666250 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpActivityQueryReq.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 = "MpActivityQueryReq", description = "代理商活动查询请求参数") +@Data +public class MpActivityQueryReq 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/MpActivityReq.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpActivityReq.java new file mode 100644 index 0000000..4e8ea77 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/req/MpActivityReq.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 = "MpActivityReq", description = "代理商活动请求参数") +@Data +public class MpActivityReq { + + @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/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/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/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/admin/controller/resp/AdminActivityResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityResp.java new file mode 100644 index 0000000..59e84b9 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityResp.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 = "AdminActivityResp", description = "代理商活动响应参数") +@Data +public class AdminActivityResp { + + 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/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..2fb7315 --- /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 String 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/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/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/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/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/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/AdminActivityConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityConvert.java new file mode 100644 index 0000000..7fec4fa --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityConvert.java @@ -0,0 +1,24 @@ +package com.seer.teach.mp.admin.convert; + +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; + +import java.util.List; + +@Mapper +public interface AdminActivityConvert { + + AdminActivityConvert INSTANCE = Mappers.getMapper(AdminActivityConvert.class); + + MpActivityEntity convert(MpActivityReq req); + + MpActivityEntity convert(MpActivityQueryReq req); + + AdminActivityResp convertToResp(MpActivityEntity 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/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/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/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/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..dd4b521 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/AdminAgentService.java @@ -0,0 +1,98 @@ +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.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.apache.commons.lang3.StringUtils; +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.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); + } + + /** + * 获取代理商详情 + * + * @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/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-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/IAdminActivityService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminActivityService.java new file mode 100644 index 0000000..93a6fb3 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminActivityService.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.req.MpActivityQueryReq; +import com.seer.teach.mp.admin.controller.req.MpActivityReq; +import com.seer.teach.mp.admin.controller.resp.AdminActivityResp; + +/** + *

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

+ * + * @author Lingma + * @since 2025-12-30 + */ +public interface IAdminActivityService { + + /** + * 分页查询代理商活动列表(管理端) + * + * @param query 查询条件 + * @return 代理商活动分页列表 + */ + PageListBean pageList(MpActivityQueryReq query); + + /** + * 创建或更新代理商活动(管理端) + * + * @param request 活动请求对象 + * @return 操作是否成功 + */ + boolean saveOrUpdateActivity(MpActivityReq request); + + /** + * 删除代理商活动(管理端) + * + * @param id 活动ID + * @return 操作是否成功 + */ + boolean deleteActivity(Integer id); + + /** + * 根据ID获取活动详情(管理端) + * + * @param id 活动ID + * @return 活动详情 + */ + 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/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/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/AdminActivityServiceImpl.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityServiceImpl.java new file mode 100644 index 0000000..2fd4442 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityServiceImpl.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.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.AdminActivityConvert; +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; + +import java.util.Objects; + +/** + *

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

+ * + * @author Lingma + * @since 2025-12-30 + */ +@Service +@RequiredArgsConstructor +public class AdminActivityServiceImpl implements IAdminActivityService { + + private final IMpActivityService agentActivityService; + + @Override + 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, AdminActivityConvert.INSTANCE::convertToRespList); + } + + @Override + public boolean saveOrUpdateActivity(MpActivityReq request) { + MpActivityEntity entity = AdminActivityConvert.INSTANCE.convert(request); + return agentActivityService.saveOrUpdateActivity(entity); + } + + @Override + public boolean deleteActivity(Integer id) { + return agentActivityService.deleteActivity(id); + } + + @Override + public AdminActivityResp getById(Integer id) { + MpActivityEntity entity = agentActivityService.getById(id); + 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..6503df2 --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityLogServiceImpl.java @@ -0,0 +1,93 @@ +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.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); + + return PageConverterUtils.convertPageList(result, this::convertToResp); + } + + @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..55abe5b --- /dev/null +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminAgentActivityParticipantServiceImpl.java @@ -0,0 +1,93 @@ +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.service.IMpAgentActivityParticipantService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + *

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

+ * + * @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()); + + 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()) + .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-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-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..78ca768 --- /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,146 @@ +-- 创建代理商表 +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 '代理商编码', + `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='代理商表'; + +-- 创建代理商员工关联表 +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)', + `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='代理商员工关联表'; + +-- 创建活动表 +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 '活动描述', + `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='代理商活动表'; + +-- 创建代理商活动参与记录表 +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', + `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`) +) 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', + `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='代理商活动操作日志表'; + +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) 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 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) 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='家长参与代理商活动关系表'; + +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', + `activity_id` int NOT NULL COMMENT '活动ID', + `parent_id` int NOT NULL 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/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 new file mode 100644 index 0000000..47db2c6 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityController.java @@ -0,0 +1,54 @@ +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.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.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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/activity") +@LogPrint +@EncryptionAnnotation +@DecryptionAnnotation +@RequiredArgsConstructor +public class AppAgentActivityController { + + private final IAppActivityService agentActivityService; + + @Operation(summary = "活动列表") + @GetMapping("/page-list") + @SaCheckPermission("mp:app:agent:activity:list") + 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) { + 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..9841036 --- /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 new file mode 100644 index 0000000..3f7af26 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppAgentActivityParticipantController.java @@ -0,0 +1,47 @@ +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.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.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-29 + */ +@Tag(name = "APP - 代理商参与活动记录") +@RestController +@RequestMapping("/app/agent/activity/participant") +@LogPrint +@EncryptionAnnotation +@DecryptionAnnotation +@RequiredArgsConstructor +public class AppAgentActivityParticipantController { + + private final IAppAgentActivityParticipantService agentActivityParticipantService; + + @Operation(summary = "获取代理商参加的活动列表") + @GetMapping() + @SaCheckPermission("mp:app:agent:participant:parents") + 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 new file mode 100644 index 0000000..35b1837 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppParentAgentActivityController.java @@ -0,0 +1,62 @@ +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 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.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/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/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..907729d --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/req/AppMpSignUpActivityReq.java @@ -0,0 +1,52 @@ +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 mobile; + + @Schema(description = "孩子姓名") + private String childName; + + @Schema(description = "孩子性别") + private Integer childGender; + + @Schema(description = "孩子出生日期") + private LocalDate childBirthDate; + + @Schema(description = "年级") + private Integer 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/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 new file mode 100644 index 0000000..2c50ec5 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AgentActivityParticipantResp.java @@ -0,0 +1,21 @@ +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; + + private String activityName; + + +} \ 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/AppActivityResp.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityResp.java new file mode 100644 index 0000000..9be7d43 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityResp.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 = "AppActivityResp", description = "活动响应参数") +@Data +public class AppActivityResp { + + 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/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/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/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..9358763 --- /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.AppActivityResp; +import com.seer.teach.mp.entity.MpActivityEntity; +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); + + MpActivityEntity convert(AppAgentActivityQueryReq req); + + @Mapping(target = "createTime", dateFormat = "yyyy-MM-dd HH:mm:ss") + @Mapping(target = "updateTime", dateFormat = "yyyy-MM-dd HH:mm:ss") + AppActivityResp convertToResp(MpActivityEntity 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/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 new file mode 100644 index 0000000..36c2cf3 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppMpActivityInfoCollectionConvert.java @@ -0,0 +1,17 @@ +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); +} \ No newline at end of file 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/IAppActivityService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppActivityService.java new file mode 100644 index 0000000..89f6753 --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppActivityService.java @@ -0,0 +1,33 @@ +package com.seer.teach.mp.app.service; + +import com.seer.teach.common.PageListBean; +import com.seer.teach.mp.app.controller.resp.AppActivityResp; +import com.seer.teach.mp.app.controller.req.AppAgentActivityQueryReq; + +/** + *

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

+ * + * @author Lingma + * @since 2025-12-30 + */ +public interface IAppActivityService { + + /** + * 分页查询代理商活动列表 + * + * @param query 查询条件 + * @param agentId 代理商ID + * @return 代理商活动分页列表 + */ + PageListBean pageList(AppAgentActivityQueryReq query, Integer agentId); + + /** + * 根据ID获取活动详情 + * + * @param id 活动ID + * @return 活动详情 + */ + 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 new file mode 100644 index 0000000..7e3a46f --- /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 agentId 代理商ID + * @param userId 用户Id + * @return 参与记录列表 + */ + 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/AppActivityServiceImpl.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppActivityServiceImpl.java new file mode 100644 index 0000000..e238fff --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppActivityServiceImpl.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.AppActivityResp; +import com.seer.teach.mp.app.convert.AppAgentActivityConvert; +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; +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 AppActivityServiceImpl implements IAppActivityService { + + private final IMpActivityService activityService; + + @Override + 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) + .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("查询结果为空"); + } + log.info("查询代理商活动数量:{}", pageResult.getTotal()); + return PageConverterUtils.convertPageListBean(pageResult, AppAgentActivityConvert.INSTANCE::convertToRespList); + } + + @Override + public AppActivityResp getById(Integer 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-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 new file mode 100644 index 0000000..540773e --- /dev/null +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppAgentActivityParticipantServiceImpl.java @@ -0,0 +1,83 @@ +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 lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +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 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AppAgentActivityParticipantServiceImpl implements IAppAgentActivityParticipantService { + + private final IMpAgentActivityParticipantService agentActivityParticipantService; + + private final UserInfoServiceApi userInfoServiceApi; + + private final IAppAgentService appAgentService; + + private final IMpActivityService mpActivityService; + + @Override + 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(); + } + Set activityIds = participants.stream().map(MpAgentActivityParticipantEntity::getActivityId).collect(Collectors.toSet()); + + List parentInfos = mpActivityService.listByIds(activityIds); + + var activityInfoMap = parentInfos.stream().collect(Collectors.toMap(MpActivityEntity::getId, activity -> activity)); + + return participants.stream() + .map(entity -> convertToDto(entity, activityInfoMap)) + .collect(Collectors.toList()); + } + + + private AgentActivityParticipantResp convertToDto(MpAgentActivityParticipantEntity entity, Map activityInfoMap) { + AgentActivityParticipantResp resp = new AgentActivityParticipantResp(); + resp.setId(entity.getId()); + resp.setActivityId(entity.getActivityId()); + resp.setAgentId(entity.getAgentId()); + MpActivityEntity activity = activityInfoMap.get(entity.getActivityId()); + if(Objects.nonNull(activity)){ + resp.setActivityName(activity.getActivityName()); + } + 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/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/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/IMpActivityService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityService.java new file mode 100644 index 0000000..d3cef0c --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityService.java @@ -0,0 +1,32 @@ +package com.seer.teach.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.seer.teach.mp.entity.MpActivityEntity; + +/** + *

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

+ * + * @author Lingma + * @since 2025-12-29 + */ +public interface IMpActivityService extends IService { + + + /** + * 创建或更新代理商活动 + * + * @param entity 活动实体 + * @return 操作是否成功 + */ + boolean saveOrUpdateActivity(MpActivityEntity 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/IMpAgentActivityLogService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityLogService.java new file mode 100644 index 0000000..e94ea59 --- /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, String 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..9bba32e --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentActivityParticipantService.java @@ -0,0 +1,34 @@ +package com.seer.teach.mp.service; + +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 { + + /** + * 根据活动ID和代理商ID获取参与记录 + * + * @param activityId 活动ID + * @param agentId 代理商ID + * @return 参与记录列表 + */ + MpAgentActivityParticipantEntity getParticipantsByActivityAndAgent(Integer activityId, Integer agentId); + + /** + * 根据代理商ID获取所有参与活动记录 + * + * @param agentId 代理商ID + * @return 参与记录列表 + */ + List 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 new file mode 100644 index 0000000..fd7a546 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentEmployeeRelationService.java @@ -0,0 +1,66 @@ +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); + + /** + * 根据用户ID获取代理商员工关联 + * + * @param userId 用户ID + * @return 代理商员工关联 + */ + MpAgentEmployeeRelationEntity getOneByUserId(Integer userId); +} \ 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..73b229f --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpAgentService.java @@ -0,0 +1,34 @@ +package com.seer.teach.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.seer.teach.mp.entity.MpAgentEntity; + +/** + * 代理商服务接口 + */ +public interface IMpAgentService 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/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/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/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/MpActivityServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityServiceImpl.java new file mode 100644 index 0000000..c465d6c --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityServiceImpl.java @@ -0,0 +1,112 @@ +package com.seer.teach.mp.service.impl; + +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.seer.teach.common.enums.ResultCodeEnum; +import com.seer.teach.common.utils.AssertUtils; +import com.seer.teach.mp.entity.MpActivityEntity; +import com.seer.teach.mp.entity.MpAgentActivityParticipantEntity; +import com.seer.teach.mp.mapper.MpAgentActivityMapper; +import com.seer.teach.mp.service.IMpActivityService; +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; + +/** + *

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

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MpActivityServiceImpl extends ServiceImpl implements IMpActivityService { + + private final IMpAgentActivityParticipantService agentActivityParticipantService; + private final IMpAgentActivityLogService agentActivityLogService; + + @Override + public boolean saveOrUpdateActivity(MpActivityEntity entity) { + MpActivityEntity 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.getCreateBy(), + operationType, + description, + beforeData, + afterData + ); + } + + return result; + } + + @Override + public boolean deleteActivity(Integer id) { + // 检查活动是否存在 + MpActivityEntity existing = super.getById(id); + AssertUtils.notNull(existing, ResultCodeEnum.ACTIVITY_NOT_ACTIVE); + + // 删除活动前先删除相关的参与记录 + LambdaQueryWrapper participantWrapper = + new LambdaQueryWrapper() + .eq(MpAgentActivityParticipantEntity::getActivityId, id); + agentActivityParticipantService.remove(participantWrapper); + + boolean result = this.removeById(id); + + // 记录操作日志 + if (result) { + String beforeData = JSONUtil.toJsonStr(existing); + String afterData = ""; + String description = "删除代理商活动: " + existing.getActivityName(); + + agentActivityLogService.logOperation( + id, + existing.getCreateBy(), + "删除", + description, + beforeData, + afterData + ); + } + + return result; + } + + @Override + public boolean saveOrUpdate(MpActivityEntity entity) { + boolean result = super.saveOrUpdate(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/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..34b3642 --- /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, String 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..280c5fb --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentActivityParticipantServiceImpl.java @@ -0,0 +1,45 @@ +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.MpAgentActivityParticipantEntity; +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.util.List; + +/** + *

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

+ * + * @author Lingma + * @since 2025-12-29 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MpAgentActivityParticipantServiceImpl extends ServiceImpl implements IMpAgentActivityParticipantService { + + private final IMpAgentActivityLogService agentActivityLogService; + + @Override + public MpAgentActivityParticipantEntity getParticipantsByActivityAndAgent(Integer activityId, Integer agentId) { + LambdaQueryWrapper queryWrapper = + new LambdaQueryWrapper() + .eq(MpAgentActivityParticipantEntity::getActivityId, activityId) + .eq(MpAgentActivityParticipantEntity::getAgentId, agentId); + + return super.getOne(queryWrapper); + } + + @Override + public List 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 new file mode 100644 index 0000000..3d24be3 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentEmployeeRelationServiceImpl.java @@ -0,0 +1,101 @@ +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.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; +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) { + if (entity.getId() == null) { + LambdaQueryWrapper checkWrapper = + new LambdaQueryWrapper() + .eq(MpAgentEmployeeRelationEntity::getAgentId, entity.getAgentId()) + .eq(MpAgentEmployeeRelationEntity::getEmployeeUserId, entity.getEmployeeUserId()); + + long count = super.count(checkWrapper); + if (count > 0) { + throw new CommonException(ResultCodeEnum.AGENT_EMPLOYEE_ALREADY_EXISTS); + } + entity.setCreateTime(LocalDateTime.now()); + } + entity.setUpdateTime(LocalDateTime.now()); + return super.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 super.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 super.count(queryWrapper) > 0; + } + + @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 new file mode 100644 index 0000000..50ac091 --- /dev/null +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpAgentServiceImpl.java @@ -0,0 +1,29 @@ +package com.seer.teach.mp.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.seer.teach.mp.entity.MpAgentEntity; +import com.seer.teach.mp.mapper.MpAgentMapper; +import com.seer.teach.mp.service.IMpAgentService; +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 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 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