修改活动表单设计器的功能

This commit is contained in:
Wang 2026-01-24 16:52:57 +08:00
parent ba75f988a0
commit 50fff07c73
4 changed files with 72 additions and 75 deletions

View File

@ -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<Boolean> 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<Boolean> 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<List<AdminActivityFormRelationResp>> getFormsByActivity(@PathVariable Integer activityId) {
public ResultBean<List<AdminActivityFormRelationResp>> getFormsByActivity(@PathVariable("activityId") Integer activityId) {
List<AdminActivityFormRelationResp> result = adminActivityFormRelationService.getFormsByActivity(activityId);
return ResultBean.success(result);
}
@Operation(summary = "删除活动关联的特定表单")
@DeleteMapping("/{id}")
@SaCheckPermission("mp:admin:activity:form:relation:delete")
public ResultBean<Boolean> 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<Boolean> setDefaultVersion( @PathVariable("id") Integer id){
Boolean result = adminActivityFormRelationService.setDefaultVersion(id);
return ResultBean.success(result);
}
}

View File

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

View File

@ -40,4 +40,19 @@ public interface IAdminActivityFormRelationService {
*/
List<AdminActivityFormRelationResp> getFormsByActivity(Integer activityId);
/**
* 删除活动关联的特定表单
*
* @param id ID
* @return 操作结果
*/
Boolean deleteFormRelationById(Integer id);
/**
* 设置活动关联表单的默认版本
*
* @param id ID
* @return 操作结果
*/
Boolean setDefaultVersion(Integer id);
}

View File

@ -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;
/**
* <p>
@ -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) {
@ -53,38 +46,43 @@ public class AdminActivityFormRelationServiceImpl implements IAdminActivityFormR
@Override
public List<AdminActivityFormRelationResp> getFormsByActivity(Integer activityId) {
if (activityId == null) {
return java.util.Collections.emptyList();
return Collections.emptyList();
}
List<MpActivityFormRelationEntity> relations = activityFormTemplateRelationService.list(
new LambdaQueryWrapper<MpActivityFormRelationEntity>()
.eq(MpActivityFormRelationEntity::getActivityId, activityId)
);
if(CollectionUtil.isEmpty(relations)){
if (CollectionUtil.isEmpty(relations)) {
return Collections.emptyList();
}
List<Integer> formIds = relations.stream()
.map(MpActivityFormRelationEntity::getFormId)
.collect(java.util.stream.Collectors.toList());
List<MpActivityFormEntity> forms = activityFormTemplateService.list(
new LambdaQueryWrapper<MpActivityFormEntity>()
.in(MpActivityFormEntity::getId, formIds)
);
log.info("getFormsByActivity: {}", forms);
if(CollectionUtil.isEmpty(forms)){
return Collections.emptyList();
}
Map<Integer, MpActivityFormEntity> mapping = forms.stream().collect(Collectors.toMap(MpActivityFormEntity::getId, Function.identity(), (old, newOne) -> newOne));
List<AdminActivityFormRelationResp> 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;
}
@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<MpActivityFormRelationEntity>()
.eq(MpActivityFormRelationEntity::getActivityId, relation.getActivityId())
.notIn(MpActivityFormRelationEntity::getId, id)
.set(MpActivityFormRelationEntity::getIsPrimary, 0)
);
// 然后将指定的表单版本设为主要版本
return activityFormTemplateRelationService.update(
new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<MpActivityFormRelationEntity>()
.eq(MpActivityFormRelationEntity::getId, id)
.set(MpActivityFormRelationEntity::getIsPrimary, 1)
);
}
}