diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityFormController.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityFormController.java index f255e82..f4a41cf 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityFormController.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/AdminActivityFormController.java @@ -16,6 +16,7 @@ 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; @@ -40,7 +41,7 @@ public class AdminActivityFormController { private final IAdminActivityFormService adminActivityFormService; @Operation(summary = "创建表单") - @PostMapping("/save") + @PostMapping @SaCheckPermission("mp:admin:activity:form:save") public ResultBean save(@Valid @RequestBody ActivityFormReq request) { Boolean result = adminActivityFormService.save(request); @@ -48,7 +49,7 @@ public class AdminActivityFormController { } @Operation(summary = "更新表单") - @PostMapping("/update") + @PutMapping @SaCheckPermission("mp:admin:activity:form:update") public ResultBean update(@Valid @RequestBody ActivityFormReq request) { Boolean result = adminActivityFormService.update(request); diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityFormResp.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityFormResp.java index 20b61bb..24afc32 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityFormResp.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/controller/resp/AdminActivityFormResp.java @@ -15,12 +15,6 @@ public class AdminActivityFormResp { @Schema(description = "表单ID") private Integer id; - /** - * 活动ID - */ - @Schema(description = "活动ID") - private Integer activityId; - /** * 表单名称 */ @@ -31,7 +25,13 @@ public class AdminActivityFormResp { * 表单描述 */ @Schema(description = "表单描述") - private String fromDescription; + private String formDescription; + + /** + * 表单配置 + */ + @Schema(description = "表单配置") + private String config; /** * 表单字段 diff --git a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityFormConvert.java b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityFormConvert.java index 33dfde8..ad3a7b8 100644 --- a/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityFormConvert.java +++ b/seer-mp/seer-mp-service-admin/src/main/java/com/seer/teach/mp/admin/convert/AdminActivityFormConvert.java @@ -13,7 +13,6 @@ public interface AdminActivityFormConvert { AdminActivityFormResp convertToResp(MpActivityFormEntity entity); - AdminActivityFormRelationResp convertToRelationResp(MpActivityFormEntity entity); MpActivityFormEntity convertToEntity(ActivityFormReq request); diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppActivityFormController.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppActivityFormController.java index 754be12..1bf1428 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppActivityFormController.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/AppActivityFormController.java @@ -11,7 +11,7 @@ import com.seer.teach.mp.app.controller.req.ActivityFormSubmitReq; import com.seer.teach.mp.app.controller.req.AppActivityFormExecutionQueryReq; import com.seer.teach.mp.app.controller.resp.AppActivityFormExecutionResp; import com.seer.teach.mp.app.controller.resp.AppActivityFormFieldResp; -import com.seer.teach.mp.app.controller.resp.AppActivityFormTemplateResp; +import com.seer.teach.mp.app.controller.resp.AppActivityFormResp; import com.seer.teach.mp.app.service.IAppActivityFormService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -48,10 +48,10 @@ public class AppActivityFormController { private final IAppActivityFormService appActivityFormService; @Operation(summary = "获取活动可用的表单") - @GetMapping("/template/{activityId}") + @GetMapping("/{activityId}") @SaCheckLogin - public ResultBean getTemplateByActivity(@PathVariable Integer activityId) { - AppActivityFormTemplateResp result = appActivityFormService.getTemplateByActivity(activityId); + public ResultBean getFormByActivity(@PathVariable Integer activityId) { + AppActivityFormResp result = appActivityFormService.getFormByActivity(activityId); return ResultBean.success(result); } diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityFormTemplateResp.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityFormResp.java similarity index 75% rename from seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityFormTemplateResp.java rename to seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityFormResp.java index b8574d2..c8185b4 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityFormTemplateResp.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/controller/resp/AppActivityFormResp.java @@ -5,9 +5,9 @@ import lombok.Data; import java.util.List; -@Schema(name = "AppActivityFormTemplateResp", description = "APP端活动表单模板响应参数") +@Schema(name = "AppActivityFormResp", description = "APP端活动表单模板响应参数") @Data -public class AppActivityFormTemplateResp { +public class AppActivityFormResp { private Integer id; diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppActivityFormConvert.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppActivityFormConvert.java index 64f65a9..c5a7375 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppActivityFormConvert.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/convert/AppActivityFormConvert.java @@ -2,7 +2,7 @@ package com.seer.teach.mp.app.convert; import com.seer.teach.mp.app.controller.resp.AppActivityFormExecutionResp; import com.seer.teach.mp.app.controller.resp.AppActivityFormFieldResp; -import com.seer.teach.mp.app.controller.resp.AppActivityFormTemplateResp; +import com.seer.teach.mp.app.controller.resp.AppActivityFormResp; import com.seer.teach.mp.entity.MpActivityFormExecutionEntity; import com.seer.teach.mp.entity.MpActivityFormFieldEntity; import com.seer.teach.mp.entity.MpActivityFormEntity; @@ -14,7 +14,8 @@ import org.mapstruct.factory.Mappers; public interface AppActivityFormConvert { AppActivityFormConvert INSTANCE = Mappers.getMapper(AppActivityFormConvert.class); - AppActivityFormTemplateResp convertToAppTemplateResp(MpActivityFormEntity entity); + @Mapping(source = "fields", target = "fields", ignore = true) + AppActivityFormResp convertToAppTemplateResp(MpActivityFormEntity entity); AppActivityFormFieldResp convertToAppFieldResp(MpActivityFormFieldEntity entity); diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppActivityFormService.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppActivityFormService.java index ea07550..a850a05 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppActivityFormService.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/IAppActivityFormService.java @@ -4,7 +4,7 @@ import com.seer.teach.common.PageListBean; import com.seer.teach.mp.app.controller.req.ActivityFormSubmitReq; import com.seer.teach.mp.app.controller.req.AppActivityFormExecutionQueryReq; import com.seer.teach.mp.app.controller.resp.AppActivityFormExecutionResp; -import com.seer.teach.mp.app.controller.resp.AppActivityFormTemplateResp; +import com.seer.teach.mp.app.controller.resp.AppActivityFormResp; import com.seer.teach.mp.app.controller.resp.AppActivityFormFieldResp; import java.util.List; @@ -25,7 +25,7 @@ public interface IAppActivityFormService { * @param activityId 活动ID * @return 表单模板响应对象 */ - AppActivityFormTemplateResp getTemplateByActivity(Integer activityId); + AppActivityFormResp getFormByActivity(Integer activityId); /** * 根据模板ID获取字段列表 diff --git a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppActivityFormServiceImpl.java b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppActivityFormServiceImpl.java index 026dcdc..3e9c668 100644 --- a/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppActivityFormServiceImpl.java +++ b/seer-mp/seer-mp-service-app/src/main/java/com/seer/teach/mp/app/service/impl/AppActivityFormServiceImpl.java @@ -8,7 +8,7 @@ import com.seer.teach.common.utils.PageConverterUtils; import com.seer.teach.mp.app.controller.req.ActivityFormSubmitReq; import com.seer.teach.mp.app.controller.req.AppActivityFormExecutionQueryReq; import com.seer.teach.mp.app.controller.resp.AppActivityFormExecutionResp; -import com.seer.teach.mp.app.controller.resp.AppActivityFormTemplateResp; +import com.seer.teach.mp.app.controller.resp.AppActivityFormResp; import com.seer.teach.mp.app.controller.resp.AppActivityFormFieldResp; import com.seer.teach.mp.app.convert.AppActivityFormConvert; import com.seer.teach.mp.app.service.IAppActivityFormService; @@ -23,6 +23,7 @@ import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -46,7 +47,7 @@ public class AppActivityFormServiceImpl implements IAppActivityFormService { private final IMpActivityFormRelationService activityFormTemplateRelationService; @Override - public AppActivityFormTemplateResp getTemplateByActivity(Integer activityId) { + public AppActivityFormResp getFormByActivity(Integer activityId) { // 首先检查活动是否存在 MpActivityEntity activity = mpActivityService.getById(activityId); if (activity == null) { @@ -55,19 +56,17 @@ public class AppActivityFormServiceImpl implements IAppActivityFormService { } // 从关联表中获取与活动关联的表单ID - Integer templateId = activityFormTemplateRelationService.getPrimaryTemplateIdByActivityId(activityId); + Integer formId = activityFormTemplateRelationService.getPrimaryFormIdByActivityId(activityId); - if (templateId != null) { - MpActivityFormEntity template = activityFormTemplateService.getById(templateId); + if (formId != null) { + MpActivityFormEntity template = activityFormTemplateService.getById(formId); if (template != null) { - AppActivityFormTemplateResp resp = AppActivityFormConvert.INSTANCE.convertToAppTemplateResp(template); + AppActivityFormResp resp = AppActivityFormConvert.INSTANCE.convertToAppTemplateResp(template); // 获取该表单的所有字段 List fields = activityFormFieldService.list( new LambdaQueryWrapper() - .eq(MpActivityFormFieldEntity::getFormId, templateId) - .orderByAsc(MpActivityFormFieldEntity::getSortOrder) - .orderByDesc(MpActivityFormFieldEntity::getId) + .eq(MpActivityFormFieldEntity::getFormId, formId) ); List fieldResps = fields.stream() @@ -78,26 +77,19 @@ public class AppActivityFormServiceImpl implements IAppActivityFormService { return resp; } } - List relations = activityFormTemplateRelationService.list( - new LambdaQueryWrapper() - .eq(MpActivityFormRelationEntity::getActivityId, activityId) - .last("LIMIT 1") - ); + Optional relation = activityFormTemplateRelationService.getLatestVersionByActivityId(activityId); - if (!relations.isEmpty()) { - templateId = relations.get(0).getFormId(); - MpActivityFormEntity template = activityFormTemplateService.getById(templateId); + if (relation.isPresent()) { + formId = relation.get().getFormId(); + MpActivityFormEntity template = activityFormTemplateService.getById(formId); if (template != null) { - AppActivityFormTemplateResp resp = AppActivityFormConvert.INSTANCE.convertToAppTemplateResp(template); + AppActivityFormResp resp = AppActivityFormConvert.INSTANCE.convertToAppTemplateResp(template); // 获取该表单的所有字段 List fields = activityFormFieldService.list( new LambdaQueryWrapper() - .eq(MpActivityFormFieldEntity::getFormId, templateId) - .orderByAsc(MpActivityFormFieldEntity::getSortOrder) - .orderByDesc(MpActivityFormFieldEntity::getId) + .eq(MpActivityFormFieldEntity::getFormId, formId) ); - List fieldResps = fields.stream() .map(AppActivityFormConvert.INSTANCE::convertToAppFieldResp) .collect(Collectors.toList()); @@ -106,7 +98,6 @@ public class AppActivityFormServiceImpl implements IAppActivityFormService { return resp; } } - log.warn("未找到活动 {} 关联的表单表单", activityId); return null; } diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityFormRelationService.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityFormRelationService.java index b180139..609e002 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityFormRelationService.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/IMpActivityFormRelationService.java @@ -16,12 +16,12 @@ import java.util.Optional; public interface IMpActivityFormRelationService extends IService { /** - * 根据活动ID获取关联的主要表单模板ID + * 根据活动ID获取关联的主要表单ID * * @param activityId 活动ID * @return 表单模板ID,如果不存在则返回null */ - Integer getPrimaryTemplateIdByActivityId(Integer activityId); + Integer getPrimaryFormIdByActivityId(Integer activityId); /** * 根据活动ID获取关联的表单模板数量 diff --git a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityFormRelationServiceImpl.java b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityFormRelationServiceImpl.java index 3d404f8..99c95fd 100644 --- a/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityFormRelationServiceImpl.java +++ b/seer-mp/seer-mp-service/src/main/java/com/seer/teach/mp/service/impl/MpActivityFormRelationServiceImpl.java @@ -2,6 +2,7 @@ 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.common.constants.CommonConstant; import com.seer.teach.mp.entity.MpActivityFormRelationEntity; import com.seer.teach.mp.mapper.MpActivityFormRelationMapper; import com.seer.teach.mp.service.IMpActivityFormRelationService; @@ -25,10 +26,11 @@ import java.util.Optional; public class MpActivityFormRelationServiceImpl extends ServiceImpl implements IMpActivityFormRelationService { @Override - public Integer getPrimaryTemplateIdByActivityId(Integer activityId) { + public Integer getPrimaryFormIdByActivityId(Integer activityId) { MpActivityFormRelationEntity relation = this.getOne( new LambdaQueryWrapper() .eq(MpActivityFormRelationEntity::getActivityId, activityId) + .eq(MpActivityFormRelationEntity::getIsPrimary, CommonConstant.ENABLE) ); return relation != null ? relation.getFormId() : null; }