美文网首页
分布式商城项目总结三之新增商品实现

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

作者: MisterDo | 来源:发表于2019-10-19 22:29 被阅读0次

    5. 新增商品实现

    5.1. js编写逻辑

    5.2. 提交请求的数据格式

    • $("#itemAddForm").serialize()将表单序列号为key-value形式的字符串以post 的形式将表单的内容提交。
    • 请求的url:
      /item/save
    • 返回的结果:
    • 自定义返回结果:

    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;
        }
    

    相关文章

      网友评论

          本文标题:分布式商城项目总结三之新增商品实现

          本文链接:https://www.haomeiwen.com/subject/adinmctx.html