package com.jt.web.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.jt.common.po.Cart;
import com.jt.web.service.CartService;
@Controller
@RequestMapping("/cart")
public class CartController {
@Autowired
private CartService cartService;
//http://www.jt.com/cart/show.html
//跳转购物车
@RequestMapping("/show")
public String show(Model model){
//根据userId查询购物车信息
Long userId=7L;
List<Cart> cartList=cartService.findCartByUserId(userId);
//将cartList数据保存到request对象中
model.addAttribute("cartList", cartList);
return "cart";
}
}
package com.jt.web.service;
import java.io.IOException;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jt.common.po.Cart;
import com.jt.common.service.HttpClientService;
import com.jt.common.vo.SysResult;
@Service
public class CartServiceImpl implements CartService {
@Autowired
private HttpClientService httpClient;
private static ObjectMapper objectMapper=new ObjectMapper();
@SuppressWarnings("unchecked")
@Override
public List<Cart> findCartByUserId(Long userId) {
String url="http://cart.jt.com/cart/query/"+userId;
String resultJSON = httpClient.doGet(url);
List<Cart> cartList=null;
try {
SysResult sysResult = objectMapper.readValue(resultJSON, SysResult.class);
cartList=(List<Cart>) sysResult.getData();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException();
}
return cartList;
}
}
package com.jt.common.vo;
import java.io.Serializable;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* 京淘商城自定义响应结构
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class SysResult implements Serializable{
private static final long serialVersionUID = 1L;
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
// 响应业务状态
/*
* 200 成功
* 201 错误
* 400 参数错误
*/
private Integer status;
// 响应消息
private String msg;
// 响应中的数据
private Object data;
public static SysResult build(Integer status, String msg, Object data) {
return new SysResult(status, msg, data);
}
public static SysResult oK(Object data) {
return new SysResult(data);
}
public static SysResult oK() {
return new SysResult(null);
}
public SysResult() {
}
public static SysResult build(Integer status, String msg) {
return new SysResult(status, msg, null);
}
public SysResult(Integer status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public SysResult(Object data) {
this.status = 200;
this.msg = "OK";
this.data = data;
}
public Boolean isOk() {
return this.status == 200;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
/**
* 将json结果集转化为SysResult对象
*
* @param jsonData json数据
* @param clazz SysResult中的object类型
* @return
*/
public static SysResult formatToPojo(String jsonData, Class<?> clazz) {
try {
if (clazz == null) {
return MAPPER.readValue(jsonData, SysResult.class);
}
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (clazz != null) {
if (data.isObject()) {
obj = MAPPER.readValue(data.traverse(), clazz);
} else if (data.isTextual()) {
obj = MAPPER.readValue(data.asText(), clazz);
}
}
return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 没有object对象的转化
*
* @param json
* @return
*/
public static SysResult format(String json) {
try {
return MAPPER.readValue(json, SysResult.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* Object是集合转化
*
* @param jsonData json数据
* @param clazz 集合中的类型
* @return
*/
public static SysResult formatToList(String jsonData, Class<?> clazz) {
try {
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (data.isArray() && data.size() > 0) {
obj = MAPPER.readValue(data.traverse(),
MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
}
return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package com.jt.web.service;
import java.io.IOException;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jt.common.po.Cart;
import com.jt.common.service.HttpClientService;
import com.jt.common.vo.SysResult;
@Service
public class CartServiceImpl implements CartService {
@Autowired
private HttpClientService httpClient;
private static ObjectMapper objectMapper=new ObjectMapper();
@SuppressWarnings("unchecked")
@Override
public List<Cart> findCartByUserId(Long userId) {
String url="http://cart.jt.com/cart/query/"+userId;
String resultJSON = httpClient.doGet(url);
List<Cart> cartList=null;
try {
SysResult sysResult = objectMapper.readValue(resultJSON, SysResult.class);
cartList=(List<Cart>) sysResult.getData();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException();
}
return cartList;
}
}