diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityFormRelationController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityFormRelationController.java index f17f4ea..da8b7b8 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityFormRelationController.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityFormRelationController.java @@ -22,7 +22,7 @@ import java.util.List; * @author Lingma * @since 2026-01-10 */ -@Tag(name = "ADMIN - 活动与表单关联") +@Tag(name = "ADMIN - 活动与表单关联关系") @RestController @RequestMapping("/activity/form/relation") @LogPrint @@ -33,31 +33,28 @@ public class AdminActivityFormRelationController { private final IAdminActivityFormRelationService adminActivityFormRelationService; - @Operation(summary = "为活动关联表单") - @PostMapping("/associate") - @SaCheckPermission("mp:admin:activity:form:relation:associate") - public ResultBean associateFormWithActivity( - @RequestParam Integer activityId, - @RequestParam Integer templateId) { - Boolean result = adminActivityFormRelationService.associateFormWithActivity(activityId, templateId); - return ResultBean.success(result); - } - - @Operation(summary = "解除活动与表单的关联") - @DeleteMapping("/disassociate") - @SaCheckPermission("mp:admin:activity:form:relation:disassociate") - public ResultBean disassociateFormWithActivity( - @RequestParam Integer activityId, - @RequestParam Integer templateId) { - Boolean result = adminActivityFormRelationService.disassociateFormWithActivity(activityId, templateId); - return ResultBean.success(result); - } - @Operation(summary = "获取活动关联的表单列表") @GetMapping("/{activityId}") @SaCheckPermission("mp:admin:activity:form:relation:list") - public ResultBean> getFormsByActivity(@PathVariable Integer activityId) { + public ResultBean> getFormsByActivity(@PathVariable("activityId") Integer activityId) { List result = adminActivityFormRelationService.getFormsByActivity(activityId); return ResultBean.success(result); } + + @Operation(summary = "删除活动关联的特定表单") + @DeleteMapping("/{id}") + @SaCheckPermission("mp:admin:activity:form:relation:delete") + public ResultBean deleteFormByActivity( + @PathVariable("id") Integer id) { + Boolean result = adminActivityFormRelationService.deleteFormRelationById(id); + return ResultBean.success(result); + } + + @Operation(summary = "设置活动关联表单的默认版本") + @PutMapping("/{id}/default-version") + @SaCheckPermission("mp:admin:activity:form:relation:set-default") + public ResultBean setDefaultVersion( @PathVariable("id") Integer id){ + Boolean result = adminActivityFormRelationService.setDefaultVersion(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/resp/AdminActivityFormRelationResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityFormRelationResp.java index eec17a2..e37ab63 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityFormRelationResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityFormRelationResp.java @@ -9,6 +9,11 @@ import java.util.List; @Data public class AdminActivityFormRelationResp { + /** + * 主键ID + */ + @Schema(description = "主键ID") + private Integer id; /** * 活动ID @@ -34,22 +39,4 @@ public class AdminActivityFormRelationResp { @Schema(description = "版本,如1.0.0") private String version; - /** - * 表单名称 - */ - @Schema(description = "表单名称") - private String formName; - - /** - * 表单描述 - */ - @Schema(description = "表单描述") - private String fromDescription; - - /** - * 状态:0-禁用,1-启用 - */ - @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/service/IAdminActivityFormRelationService.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminActivityFormRelationService.java index f2f639d..59843e3 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminActivityFormRelationService.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/IAdminActivityFormRelationService.java @@ -40,4 +40,19 @@ public interface IAdminActivityFormRelationService { */ List getFormsByActivity(Integer activityId); + /** + * 删除活动关联的特定表单 + * + * @param id ID + * @return 操作结果 + */ + Boolean deleteFormRelationById(Integer id); + + /** + * 设置活动关联表单的默认版本 + * + * @param id ID + * @return 操作结果 + */ + Boolean setDefaultVersion(Integer id); } \ No newline at end of file diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityFormRelationServiceImpl.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityFormRelationServiceImpl.java index aa0de3e..57c5bba 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityFormRelationServiceImpl.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/service/impl/AdminActivityFormRelationServiceImpl.java @@ -5,20 +5,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.seer.teach.mp.admin.controller.resp.AdminActivityFormRelationResp; import com.seer.teach.mp.admin.convert.AdminMpActivityFormRelationConvert; import com.seer.teach.mp.admin.service.IAdminActivityFormRelationService; -import com.seer.teach.mp.entity.MpActivityFormEntity; import com.seer.teach.mp.entity.MpActivityFormRelationEntity; import com.seer.teach.mp.service.IMpActivityFormRelationService; -import com.seer.teach.mp.service.IMpActivityFormService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.function.Function; -import java.util.stream.Collectors; /** *

@@ -34,7 +28,6 @@ import java.util.stream.Collectors; public class AdminActivityFormRelationServiceImpl implements IAdminActivityFormRelationService { private final IMpActivityFormRelationService activityFormTemplateRelationService; - private final IMpActivityFormService activityFormTemplateService; @Override public Boolean associateFormWithActivity(Integer activityId, Integer formId) { @@ -44,47 +37,52 @@ public class AdminActivityFormRelationServiceImpl implements IAdminActivityFormR @Override public Boolean disassociateFormWithActivity(Integer activityId, Integer formId) { return activityFormTemplateRelationService.remove( - new LambdaQueryWrapper() - .eq(MpActivityFormRelationEntity::getActivityId, activityId) - .eq(MpActivityFormRelationEntity::getFormId, formId) + new LambdaQueryWrapper() + .eq(MpActivityFormRelationEntity::getActivityId, activityId) + .eq(MpActivityFormRelationEntity::getFormId, formId) ); } @Override public List getFormsByActivity(Integer activityId) { if (activityId == null) { - return java.util.Collections.emptyList(); + return Collections.emptyList(); } List relations = activityFormTemplateRelationService.list( - new LambdaQueryWrapper() - .eq(MpActivityFormRelationEntity::getActivityId, activityId) + new LambdaQueryWrapper() + .eq(MpActivityFormRelationEntity::getActivityId, activityId) ); - if(CollectionUtil.isEmpty(relations)){ + if (CollectionUtil.isEmpty(relations)) { return Collections.emptyList(); } - List formIds = relations.stream() - .map(MpActivityFormRelationEntity::getFormId) - .collect(java.util.stream.Collectors.toList()); - - List forms = activityFormTemplateService.list( - new LambdaQueryWrapper() - .in(MpActivityFormEntity::getId, formIds) - ); - log.info("getFormsByActivity: {}", forms); - if(CollectionUtil.isEmpty(forms)){ - return Collections.emptyList(); - } - Map mapping = forms.stream().collect(Collectors.toMap(MpActivityFormEntity::getId, Function.identity(), (old, newOne) -> newOne)); List adminActivityFormRelationRespList = AdminMpActivityFormRelationConvert.INSTANCE.toAdminActivityFormRelationRespList(relations); - for (AdminActivityFormRelationResp adminActivityFormRelationResp : adminActivityFormRelationRespList) { - MpActivityFormEntity activityForm = mapping.get(adminActivityFormRelationResp.getFormId()); - if(Objects.nonNull(activityForm)){ - adminActivityFormRelationResp.setFormName(activityForm.getFormName()); - adminActivityFormRelationResp.setFromDescription(activityForm.getFormDescription()); - } - } + log.debug("getFormsByActivity: {}", adminActivityFormRelationRespList); - return adminActivityFormRelationRespList; + return adminActivityFormRelationRespList; + } + + @Override + public Boolean deleteFormRelationById(Integer id) { + return activityFormTemplateRelationService.removeById(id); + } + + @Override + public Boolean setDefaultVersion(Integer id) { + MpActivityFormRelationEntity relation = activityFormTemplateRelationService.getById(id); + // 先将同一活动的其他表单版本设为非主要 + activityFormTemplateRelationService.update( + new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper() + .eq(MpActivityFormRelationEntity::getActivityId, relation.getActivityId()) + .notIn(MpActivityFormRelationEntity::getId, id) + .set(MpActivityFormRelationEntity::getIsPrimary, 0) + ); + + // 然后将指定的表单版本设为主要版本 + return activityFormTemplateRelationService.update( + new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper() + .eq(MpActivityFormRelationEntity::getId, id) + .set(MpActivityFormRelationEntity::getIsPrimary, 1) + ); } } \ No newline at end of file