在制作JAVA后台的落地页时,需要遵循以下步骤和结构: 第一步:设计主要表
- 项目表(Project):用于存储项目相关的信息,如项目ID、项目名称等。
- 计划表(Plan):用于存储计划相关的信息,如计划ID、计划名称、所属项目ID等。
- 落地页表(Page):用于存储落地页相关的信息,如落地页ID、落地页标题、落地页描述等。
- 信息采集表(InfoCollection):用于存储信息采集相关的信息,如信息采集ID、信息采集内容、信息采集字段ID等。
- 信息采集字段表(InfoField):用于存储信息采集字段相关的信息,如字段ID、字段名称、字段类型等。 简要关系说明:
- 新增计划需要配置所属项目并关联落地页。
- 落地页中关联信息采集。
- 信息采集中配置信息采集字段。 第二步:采集页生成 细节案例: 假设我们有一个名为“旅游计划”的项目,计划名称为“北京旅游”。我们需要创建一个落地页,标题为“北京旅游”,描述为“探索北京的历史遗迹和文化景点”。同时,我们需要采集一些关于北京旅游的信息,例如:“故宫”、“天安门”、“长城”等。 首先,我们需要在项目表中添加一个新的项目记录,项目ID为1,项目名称为“旅游计划”。然后,我们需要在计划表中添加一个新的计划记录,计划ID为1,计划名称为“北京旅游”,所属项目ID为1。接下来,我们需要在落地页表中添加一个新的落地页记录,落地页ID为1,落地页标题为“北京旅游”,落地页描述为“探索北京的历史遗迹和文化景点”。最后,我们需要在信息采集表中添加一个新的信息采集记录,信息采集ID为1,信息采集内容为“故宫”,信息采集字段ID为1。
/**
* 生成静态页面
* @throws IOException
*/
public String generateHtmlTest(String planId) throws Exception {
String directory = Objects.isNull(LoginUtil.getOrgCode()) ? "A01" : LoginUtil.getOrgCode();
ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
resolver.setPrefix("templates/");
resolver.setSuffix(".html");
//创建模板引擎对象
TemplateEngine templateEngine = new TemplateEngine();
//将加载器放入模板引擎对象中
templateEngine.setTemplateResolver(resolver);
//创建Context对象(存放Model)
Context context = new Context();
String indexFilePath = "D:\\0-开发工作\\cms";
String indexName = planId + SymbolConstant.UNDERLINE + "index-9.html";
//创建字符输出流并且自定义输出文件的位置和文件名
try (FileOutputStream out = new FileOutputStream(indexFilePath + SymbolConstant.SINGLE_SLASH + indexName)) {
Writer writer = new OutputStreamWriter(out, "UTF-8");
// 计划
TblAdPlan plan = adPlanService.getById(planId);
if (Objects.isNull(plan.getPageId())) {
throw new Exception("未关联落地页");
}
// 落地页数据
TblAdGroundPage groundPage = adGroundPageService.getById(plan.getPageId());
groundPage.setGroundContentList(JSON.parseArray(groundPage.getGroundContent(), GroundContent.class));
context.setVariable(SymbolConstant.RESOURCE_KEY, "plan");
if (Objects.isNull(groundPage.getGatherId())) {
throw new Exception("未关联采集数据");
}
TblAdGather gather = adGatherService.getById(groundPage.getGatherId());
context.setVariable(SymbolConstant.RESOURCE_KEY, "gather");
if (Objects.isNull(gather.getId())) {
throw new Exception("未配置采集字段");
}
QueryWrapper fieldReq = new QueryWrapper();
fieldReq.eq("gather_id", gather.getId());
List<TblAdGatherField> fields = adGatherFieldService.list(fieldReq);
fields.stream().forEach(field -> {
field.setTitleTypeMap(JSON.parseObject(field.getTitleType(), TitleTypeMap.class));
});
context.setVariable(SymbolConstant.RESOURCE_KEY, "gatherField");
// 项目
TblAdProject adProject = adProjectService.getById(plan.getProjectId());
context.setVariable(SymbolConstant.RESOURCE_KEY, "adProject");
//创建静态文件,"template"是模板html名字
templateEngine.process("index", context, writer);
}
//上传到oss
File file = new File(indexFilePath + SymbolConstant.SINGLE_SLASH + indexName);
ossService.uploadLoadingPage(new FileInputStream(file), indexName);
return indexName;
}
内容重构: ③ 落地页的作用主要是提供给抖音巨量平台,用户在浏览广告时所需要填写的数据。这些数据可以通过java后台配置生成并传递给广告平台,以便用户根据落地页面进行填写和提交。 第二步:在巨量广告平台上添加落地页链接。这一步需要在巨量广告平台上完成配置。 第三步:在JAVA后台新增添加广告的接口,以实现对广告推送数据的持久化存储。后端可以创建一个接口,供前端调用,请求参数包括落地页中保存的所有所需数据,例如上例中的plan对象中的数据等。