【SSM分布式架构电商项目-16】实现首页大广告和小广告

实现大广告

访问后台系统接口获取数据

大广告数据结构:
这里写图片描述
用httpclient获取api接口,构造大广告数据结构:
这里写图片描述
设置大广告获取的api路径:
这里写图片描述

将json数据保存到模型数据中

这里写图片描述

通过EL表达式输出到页面

这里写图片描述

测试

这里写图片描述

效果:
这里写图片描述

实现小广告

分析

这里写图片描述

实现

Controller:
这里写图片描述

Service:
这里写图片描述
效果:
这里写图片描述

优化实现

这里写图片描述

package com.taotao.common.bean;

import java.util.List;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class EasyUIResult {

    // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    private Long total;

    private List<?> rows;

    public EasyUIResult() {

    }

    public EasyUIResult(Long total, List<?> rows) {
        this.total = total;
        this.rows = rows;
    }
    public EasyUIResult(Integer total, List<?> rows) {
        this.total = Long.valueOf(total);
        this.rows = rows;
    }

    public Long getTotal() {
        return total;
    }

    public void setTotal(Long total) {
        this.total = total;
    }

    public List<?> getRows() {
        return rows;
    }

    public void setRows(List<?> rows) {
        this.rows = rows;
    }

    /**
     * Object是集合转化
     * 
     * @param jsonData json数据
     * @param clazz 集合中的类型
     * @return
     */
    public static EasyUIResult formatToList(String jsonData, Class<?> clazz) {
        try {
            JsonNode jsonNode = MAPPER.readTree(jsonData);
            JsonNode data = jsonNode.get("rows");
            List<?> list = null;
            if (data.isArray() && data.size() > 0) {
                list = MAPPER.readValue(data.traverse(),
                        MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
            }
            return new EasyUIResult(jsonNode.get("total").intValue(), list);
        } catch (Exception e) {
            return null;
        }
    }
}

可能遇到的问题:
[ERROR] Failed to execute goal on project taotao-web: Could not resolve dependencies for project com.taotao.web:taotao-web:war:0.0.1-SNAPSHOT: Failed to collect dependencies at com.taotao.manage:taotao-manage-pojo:jar:0.0.1-SNAPSHOT: Failed to read artifact descriptor for com.taotao.manage:taotao-manage-pojo:jar:0.0.1-SNAPSHOT: Could not find artifact com.taotao.manage:taotao-manage:pom:0.0.1-SNAPSHOT -> [Help 1]

重点在于最后一句Could not find artifact com.taotao.manage:taotao-manage:pom:0.0.1-SNAPSHOT 错误信息提示:寻找不到taotao-manager(这个是一个父工程,类型为POM)。
解决方案:

原因是本地仓库缺少了 com.taotao.manager:pom:0.0.1-SNAPSHOT, 原来是忘记了将父工程打包到本地仓库 ,

运行聚合工程前记得先将依赖的工程都先Maven install到本地仓库,否则也会出现以上问题。

最后源码

package com.taotao.web.service;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.taotao.common.bean.EasyUIResult;
import com.taotao.common.service.ApiService;
import com.taotao.manage.pojo.Content;

@Service
public class IndexService {

    @Autowired
    private ApiService apiService;

    @Value("${TAOTAO_MANAGE_URL}")
    private String TAOTAO_MANAGE_URL;

    @Value("${INDEX_AD1_URL}")
    private String INDEX_AD1_URL;

    @Value("${INDEX_AD2_URL}")
    private String INDEX_AD2_URL;

    private static final ObjectMapper MAPPER = new ObjectMapper();

    @SuppressWarnings("unchecked")
    public String queryIndexAD1() {
        try {
            String url = TAOTAO_MANAGE_URL + INDEX_AD1_URL;
            String jsonData = this.apiService.doGet(url);
            if (StringUtils.isEmpty(jsonData)) {
                return null;
            }
            // 解析json数据,封装成前端所需要的结构
            EasyUIResult easyUIResult = EasyUIResult.formatToList(jsonData, Content.class);
            List<Content> contents = (List<Content>) easyUIResult.getRows();
            List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
            for (Content content : contents) {
                Map<String, Object> map = new LinkedHashMap<String, Object>();
                map.put("srcB", content.getPic());
                map.put("height", 240);
                map.put("alt",content.getTitle());
                map.put("width", 670);
                map.put("src", content.getPic());
                map.put("widthB", 550);
                map.put("href", content.getUrl());
                map.put("heightB", 240);
                result.add(map);
            }
            return MAPPER.writeValueAsString(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

//    public String queryIndexAD1() {
//        try {
//            String url = TAOTAO_MANAGE_URL + INDEX_AD1_URL;
//            String jsonData = this.apiService.doGet(url);
//            if (StringUtils.isEmpty(jsonData)) {
//                return null;
//            }
//            // 解析json数据,封装成前端所需要的结构
//            JsonNode jsonNode = MAPPER.readTree(jsonData);
//            ArrayNode rows = (ArrayNode) jsonNode.get("rows");
//            List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
//            for (JsonNode row : rows) {
//                Map<String, Object> map = new LinkedHashMap<String, Object>();
//                map.put("srcB", row.get("pic").asText());
//                map.put("height", 240);
//                map.put("alt", row.get("title").asText());
//                map.put("width", 670);
//                map.put("src", row.get("pic").asText());
//                map.put("widthB", 550);
//                map.put("href", row.get("url").asText());
//                map.put("heightB", 240);
//                result.add(map);
//            }
//            return MAPPER.writeValueAsString(result);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return null;
//    }

    public String queryIndexAD2() {
        try {
            String url = TAOTAO_MANAGE_URL + INDEX_AD2_URL;
            String jsonData = this.apiService.doGet(url);
            if (StringUtils.isEmpty(jsonData)) {
                return null;
            }
            // 解析json数据,封装成前端所需要的结构
            JsonNode jsonNode = MAPPER.readTree(jsonData);
            ArrayNode rows = (ArrayNode) jsonNode.get("rows");
            List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
            for (JsonNode row : rows) {
                Map<String, Object> map = new LinkedHashMap<String, Object>();
                map.put("width", 310);
                map.put("height", 70);
                map.put("src", row.get("pic").asText());
                map.put("href", row.get("url").asText());
                map.put("alt", row.get("title").asText());
                map.put("widthB", 210);
                map.put("heightB", 70);
                map.put("srcB", row.get("pic").asText());
                result.add(map);
            }
            return MAPPER.writeValueAsString(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}
package com.taotao.web.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.taotao.web.service.IndexService;


@RequestMapping("index")
@Controller
public class IndexController {

    @Autowired
    private IndexService indexService;
    /**
     * 首页
     * 
     * @return
     */
    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView index() {
        ModelAndView mv = new ModelAndView("index");
        // 首页大广告
        String indexAD1 = this.indexService.queryIndexAD1();
        mv.addObject("indexAD1", indexAD1);
        // 首页小广告
        String indexAD2 = this.indexService.queryIndexAD2();
        mv.addObject("indexAD2", indexAD2);
        return mv;
    }

}

猜你喜欢

转载自blog.csdn.net/cckevincyh/article/details/80251490