分布式商城项目总结三之新增商品实现
2019-10-19 本文已影响0人
MisterDo
5. 新增商品实现
5.1. js编写逻辑
5.2. 提交请求的数据格式
- $("#itemAddForm").serialize()将表单序列号为key-value形式的字符串以post 的形式将表单的内容提交。
- 请求的url:
/item/save - 返回的结果:
- 自定义返回结果:
- 1、状态码
- 2、响应的消息
- 3、响应的数据
关于TaotaoResult的pojo
5.3. 获得商品id
/**
* 商品id生成
*/
public static long genItemId() {
//取当前时间的长整形值包含毫秒
long millis = System.currentTimeMillis();
//long millis = System.nanoTime();
//加上两位随机数
Random random = new Random();
int end2 = random.nextInt(99);
//如果不足两位前面补0
String str = millis + String.format("%02d", end2);
long id = new Long(str);
return id;
}
5.4 ItemServiceImpl
@Service
public class ItemServiceImpl implements ItemService {
@Autowired
TbItemMapper itemMapper;
@Autowired
TbItemDescMapper itemDescMapper;
@Autowired
TbItemParamItemMapper itemParamItemMapper;
@Override
public TaotaoResult createItem(TbItem item, String desc, String itemParam) throws Exception {
Long itemId = IDUtils.genItemId();
item.setId(itemId);
item.setStatus((byte) 1);
item.setCreated(new Date());
item.setUpdated(new Date());
//添加商品信息
itemMapper.insert(item);
//添加商品描述信息
TaotaoResult result = insertItemDesc(itemId,desc);
if(result.getStatus()!=200) {
throw new Exception();
}
//添加商品规格参数
result = insertItemParamItem(itemId,itemParam);
if(result.getStatus()!=200) {
throw new Exception();
}
return TaotaoResult.ok();
}
private TaotaoResult insertItemDesc(long itemId,String desc){
TbItemDesc itemDesc = new TbItemDesc();
itemDesc.setItemId(itemId);
itemDesc.setItemDesc(desc);
itemDesc.setCreated(new Date());
itemDesc.setUpdated(new Date());
itemDescMapper.insert(itemDesc);
return TaotaoResult.ok();
}
private TaotaoResult insertItemParamItem(Long itemId,String itemParam){
TbItemParamItem itemParamItem = new TbItemParamItem();
itemParamItem.setItemId(itemId);
itemParamItem.setParamData(itemParam);
itemParamItem.setCreated(new Date());
itemParamItem.setUpdated(new Date());
itemParamItemMapper.insert(itemParamItem);
return TaotaoResult.ok();
}
}
注意:这里将商品信息分成了三个表,商品的基本信息表,商品描述表,商品的规格参数表,因此需要三个Mapper,如图:
很明显,增加了冗余,将表中较独立的列分开,优化查询
5.5. Controller实现
@RequestMapping(value = "/save",method = RequestMethod.POST)
@ResponseBody
public TaotaoResult createItem(TbItem item,String desc,String itemParams) throws Exception{
TaotaoResult result = itemService.createItem(item,desc,itemParams);
return result;
}