LandingPageStepConfigController.java 5.4 KB
// landingpage/controller/LandingPageStepConfigController.java
package com.aigeo.landingpage.controller;

import com.aigeo.landingpage.entity.LandingPageStepConfig;
import com.aigeo.landingpage.service.LandingPageStepConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Optional;

@RestController
@RequestMapping("/api/landing-page-step-configs")
public class LandingPageStepConfigController {
    
    @Autowired
    private LandingPageStepConfigService landingPageStepConfigService;
    
    @GetMapping("/project/{projectId}")
    public ResponseEntity<LandingPageStepConfig> getConfigByProjectId(@PathVariable Integer projectId) {
        Optional<LandingPageStepConfig> config = landingPageStepConfigService.getConfigByProjectId(projectId);
        return config.map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
    
    @GetMapping("/{id}")
    public ResponseEntity<LandingPageStepConfig> getConfigById(@PathVariable Integer id) {
        Optional<LandingPageStepConfig> config = landingPageStepConfigService.getConfigById(id);
        return config.map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
    
    @PostMapping
    public LandingPageStepConfig createConfig(@RequestBody LandingPageStepConfig config) {
        return landingPageStepConfigService.saveConfig(config);
    }
    
    @PutMapping("/{id}")
    public ResponseEntity<LandingPageStepConfig> updateConfig(@PathVariable Integer id, 
                                                           @RequestBody LandingPageStepConfig configDetails) {
        Optional<LandingPageStepConfig> config = landingPageStepConfigService.getConfigById(id);
        if (config.isPresent()) {
            LandingPageStepConfig updatedConfig = config.get();
            // 更新所有字段
            updatedConfig.setTargetAudienceDesc(configDetails.getTargetAudienceDesc());
            updatedConfig.setUserPainPoints(configDetails.getUserPainPoints());
            updatedConfig.setUserExpectations(configDetails.getUserExpectations());
            updatedConfig.setAgeGroups(configDetails.getAgeGroups());
            updatedConfig.setGenderPreference(configDetails.getGenderPreference());
            updatedConfig.setBehaviorCharacteristics(configDetails.getBehaviorCharacteristics());
            updatedConfig.setDecisionMakingStyles(configDetails.getDecisionMakingStyles());
            updatedConfig.setIndustryPrimary(configDetails.getIndustryPrimary());
            updatedConfig.setIndustrySecondary(configDetails.getIndustrySecondary());
            updatedConfig.setIndustryTertiary(configDetails.getIndustryTertiary());
            updatedConfig.setMarketingGoal(configDetails.getMarketingGoal());
            updatedConfig.setDesignStyle(configDetails.getDesignStyle());
            updatedConfig.setPrimaryColor(configDetails.getPrimaryColor());
            updatedConfig.setAccentColor(configDetails.getAccentColor());
            updatedConfig.setTemplateId(configDetails.getTemplateId());
            updatedConfig.setUniqueValueProposition(configDetails.getUniqueValueProposition());
            updatedConfig.setCoreAdvantages(configDetails.getCoreAdvantages());
            updatedConfig.setPrimaryKeyword(configDetails.getPrimaryKeyword());
            updatedConfig.setSecondaryKeywords(configDetails.getSecondaryKeywords());
            updatedConfig.setContentGenerationType(configDetails.getContentGenerationType());
            updatedConfig.setCompanyName(configDetails.getCompanyName());
            updatedConfig.setBrandName(configDetails.getBrandName());
            updatedConfig.setCompanyDescription(configDetails.getCompanyDescription());
            updatedConfig.setVideoUrl(configDetails.getVideoUrl());
            updatedConfig.setLogoFileId(configDetails.getLogoFileId());
            updatedConfig.setContactInfo(configDetails.getContactInfo());
            updatedConfig.setSocialMediaLinks(configDetails.getSocialMediaLinks());
            updatedConfig.setPrimaryCtaText(configDetails.getPrimaryCtaText());
            updatedConfig.setSecondaryCtaTexts(configDetails.getSecondaryCtaTexts());
            updatedConfig.setTestimonials(configDetails.getTestimonials());
            updatedConfig.setSocialProofs(configDetails.getSocialProofs());
            updatedConfig.setFormFields(configDetails.getFormFields());
            updatedConfig.setPageTitle(configDetails.getPageTitle());
            updatedConfig.setPageDescription(configDetails.getPageDescription());
            updatedConfig.setGaTrackingCode(configDetails.getGaTrackingCode());
            updatedConfig.setDeploymentMethod(configDetails.getDeploymentMethod());
            updatedConfig.setDeploymentConfig(configDetails.getDeploymentConfig());
            updatedConfig.setPricingPlan(configDetails.getPricingPlan());
            
            LandingPageStepConfig savedConfig = landingPageStepConfigService.saveConfig(updatedConfig);
            return ResponseEntity.ok(savedConfig);
        } else {
            return ResponseEntity.notFound().build();
        }
    }
    
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteConfig(@PathVariable Integer id) {
        landingPageStepConfigService.deleteConfig(id);
        return ResponseEntity.noContent().build();
    }
}