增加活动表单设计的功能
This commit is contained in:
parent
e9616a69c5
commit
6ce00db8fc
@ -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<Boolean> 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<Boolean> update(@Valid @RequestBody ActivityFormReq request) {
|
||||
Boolean result = adminActivityFormService.update(request);
|
||||
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
* 表单字段
|
||||
|
||||
@ -13,7 +13,6 @@ public interface AdminActivityFormConvert {
|
||||
|
||||
AdminActivityFormResp convertToResp(MpActivityFormEntity entity);
|
||||
|
||||
|
||||
AdminActivityFormRelationResp convertToRelationResp(MpActivityFormEntity entity);
|
||||
|
||||
MpActivityFormEntity convertToEntity(ActivityFormReq request);
|
||||
|
||||
@ -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<AppActivityFormTemplateResp> getTemplateByActivity(@PathVariable Integer activityId) {
|
||||
AppActivityFormTemplateResp result = appActivityFormService.getTemplateByActivity(activityId);
|
||||
public ResultBean<AppActivityFormResp> getFormByActivity(@PathVariable Integer activityId) {
|
||||
AppActivityFormResp result = appActivityFormService.getFormByActivity(activityId);
|
||||
return ResultBean.success(result);
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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获取字段列表
|
||||
|
||||
@ -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<MpActivityFormFieldEntity> fields = activityFormFieldService.list(
|
||||
new LambdaQueryWrapper<MpActivityFormFieldEntity>()
|
||||
.eq(MpActivityFormFieldEntity::getFormId, templateId)
|
||||
.orderByAsc(MpActivityFormFieldEntity::getSortOrder)
|
||||
.orderByDesc(MpActivityFormFieldEntity::getId)
|
||||
.eq(MpActivityFormFieldEntity::getFormId, formId)
|
||||
);
|
||||
|
||||
List<AppActivityFormFieldResp> fieldResps = fields.stream()
|
||||
@ -78,26 +77,19 @@ public class AppActivityFormServiceImpl implements IAppActivityFormService {
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
List<MpActivityFormRelationEntity> relations = activityFormTemplateRelationService.list(
|
||||
new LambdaQueryWrapper<MpActivityFormRelationEntity>()
|
||||
.eq(MpActivityFormRelationEntity::getActivityId, activityId)
|
||||
.last("LIMIT 1")
|
||||
);
|
||||
Optional<MpActivityFormRelationEntity> 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<MpActivityFormFieldEntity> fields = activityFormFieldService.list(
|
||||
new LambdaQueryWrapper<MpActivityFormFieldEntity>()
|
||||
.eq(MpActivityFormFieldEntity::getFormId, templateId)
|
||||
.orderByAsc(MpActivityFormFieldEntity::getSortOrder)
|
||||
.orderByDesc(MpActivityFormFieldEntity::getId)
|
||||
.eq(MpActivityFormFieldEntity::getFormId, formId)
|
||||
);
|
||||
|
||||
List<AppActivityFormFieldResp> 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;
|
||||
}
|
||||
|
||||
@ -16,12 +16,12 @@ import java.util.Optional;
|
||||
public interface IMpActivityFormRelationService extends IService<MpActivityFormRelationEntity> {
|
||||
|
||||
/**
|
||||
* 根据活动ID获取关联的主要表单模板ID
|
||||
* 根据活动ID获取关联的主要表单ID
|
||||
*
|
||||
* @param activityId 活动ID
|
||||
* @return 表单模板ID,如果不存在则返回null
|
||||
*/
|
||||
Integer getPrimaryTemplateIdByActivityId(Integer activityId);
|
||||
Integer getPrimaryFormIdByActivityId(Integer activityId);
|
||||
|
||||
/**
|
||||
* 根据活动ID获取关联的表单模板数量
|
||||
|
||||
@ -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<MpActivityFormRelationMapper, MpActivityFormRelationEntity> implements IMpActivityFormRelationService {
|
||||
|
||||
@Override
|
||||
public Integer getPrimaryTemplateIdByActivityId(Integer activityId) {
|
||||
public Integer getPrimaryFormIdByActivityId(Integer activityId) {
|
||||
MpActivityFormRelationEntity relation = this.getOne(
|
||||
new LambdaQueryWrapper<MpActivityFormRelationEntity>()
|
||||
.eq(MpActivityFormRelationEntity::getActivityId, activityId)
|
||||
.eq(MpActivityFormRelationEntity::getIsPrimary, CommonConstant.ENABLE)
|
||||
);
|
||||
return relation != null ? relation.getFormId() : null;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user