分布式商城项目总结三之新增商品实现

2019-10-19  本文已影响0人  MisterDo

5. 新增商品实现

5.1. js编写逻辑

5.2. 提交请求的数据格式

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,如图:

商品信息的三个表.PNG
很明显,增加了冗余,将表中较独立的列分开,优化查询
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;
    }
上一篇下一篇

猜你喜欢

热点阅读