链接:https://pan.baidu.com/s/1RHdQjAxpe6IgdRdcERHnCQ
提取码:ptez
Service:
package com.taotao.service;
import com.taotao.pojo.TbItemParam;
import com.taotao.utils.TaotaoResult;
public interface ItemParamService {
//根据id查询商品规格参数类别
public TaotaoResult getItemParamByCid(long cid);
//保存商品规格参数模板
public TaotaoResult saveItemParam(TbItemParam tbItemParam);
//查询商品规格参数
public String getItemParamItemByItemId(long itemId);
}
ServiceImpl:
package com.taotao.service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.druid.support.json.JSONUtils;
import com.taotao.mapper.ItemParamItemMapper;
import com.taotao.mapper.ItemParamMapper;
import com.taotao.pojo.TbItemParam;
import com.taotao.pojo.TbItemParamItem;
import com.taotao.utils.JsonUtils;
import com.taotao.utils.TaotaoResult;
@Service
public class ItemParamServiceImpl implements ItemParamService {
@Autowired
private ItemParamMapper itemParamMapper;
@Autowired
private ItemParamItemMapper itemParamItemMapper;
/**
* 根据id查询规格参数模板类别
*/
@Override
public TaotaoResult getItemParamByCid(long cid) {
List<TbItemParam> list = itemParamMapper.getItemParamByCid(cid);
if (list != null && list.size()>0) {
list.get(0);
}
return TaotaoResult.ok();
}
/**
* 保存规格参数模板
*/
@Override
public TaotaoResult saveItemParam(TbItemParam tbItemParam) {
//数据补全
tbItemParam.setCreated(new Date());
tbItemParam.setUpdated(new Date());
itemParamMapper.saveItemParam(tbItemParam);
return TaotaoResult.ok();
}
/**
* 查询商品规格参数
*/
@Override
public String getItemParamItemByItemId(long itemId) {
List<TbItemParamItem> list = itemParamItemMapper.getItemParamItemByItemId(itemId);
if (list == null || list.size() == 0) {
return "";
}
TbItemParamItem tbItem = list.get(0);//查询出规格参数
//查询出所需要的字段
String paramData = tbItem.getParamData();
//解析json格式
//将json格式转换为对象
List<Map> listMap = JsonUtils.jsonToList(paramData, Map.class);
StringBuffer sb = new StringBuffer();
sb.append("<div data-tab=\"item\" class=\"hide\" style=\"display: block;\">\n" );
sb.append(" <div class=\"Ptable\">\n" );
for (Map map : listMap) {
sb.append(" <div class=\"Ptable-item\">\n" );
sb.append(" <h3>"+map.get("group")+"</h3>\n" );
List<Map> m2 = (List<Map>) map.get("params");
for (Map map2 : m2) {
sb.append(" <dl>\n" );
sb.append(" <dt>"+map2.get("k")+"</dt>\n" );
sb.append(" <dd>"+map2.get("v")+"</dd>\n" );
sb.append(" </dl>\n" );
}
sb.append(" </div>\n" );
}
sb.append(" </div>\n" );
sb.append("</div>");
return sb.toString();
}
}
Controller:
package com.taotao.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.taotao.pojo.TbItemParam;
import com.taotao.service.ItemParamService;
import com.taotao.utils.TaotaoResult;
@Controller
@RequestMapping("/item/param")
public class ItemParamController {
@Autowired
private ItemParamService itemParamService;
/**
* 商品规格模板查询,根据商品分类id
* @param cid
* @return
*/
@RequestMapping("/query/itemcatid/{cid}")
@ResponseBody
public TaotaoResult getItemParam(@PathVariable long cid){
return itemParamService.getItemParamByCid(cid);
}
/**
* 添加规格参数模板
* @param cid
* @param paramData
* @return
*/
@RequestMapping("/save/{cid}")
@ResponseBody
public TaotaoResult saveTbItemParam(@PathVariable long cid,String paramData){
TbItemParam param = new TbItemParam();
param.setItemCatId(cid);
param.setParamData(paramData);
return itemParamService.saveItemParam(param);
}
/**
* 查询商品规格参数
* @param itemId
* @param model
* @return
*/
@RequestMapping("/itemParamItems/{itemId}")
public String getItemParamItemByItemId(@PathVariable long itemId,Model model){
String paramData = itemParamService.getItemParamItemByItemId(itemId);
model.addAttribute("paramData", paramData);
return "paramList";
}
}
所需的工具类JsonUtils.java
package com.taotao.utils;
import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* 淘淘商城自定义响应结构
*/
public class JsonUtils {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 将对象转换成json字符串。
* <p>Title: pojoToJson</p>
* <p>Description: </p>
* @param data
* @return
*/
public static String objectToJson(Object data) {
try {
String string = MAPPER.writeValueAsString(data);
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
/**
* 将json结果集转化为对象
*
* @param jsonData json数据
* @param clazz 对象中的object类型
* @return
*/
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
try {
T t = MAPPER.readValue(jsonData, beanType);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 将json数据转换成pojo对象list
* <p>Title: jsonToList</p>
* <p>Description: </p>
* @param jsonData
* @param beanType
* @return
*/
public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
try {
List<T> list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
测试结果