基于Spring boot开发中商城商品中 规格的后台开发 及数据规格的排序思考

    @Transactional
    public void   addCommodity(Commodity commodity,List<Map<String, Object>> list){
        //添加規格
        //新增
        int i=0;
        for(Map<String ,Object> map1: list){

            CommodityDetails commodityDetails = new CommodityDetails();
            commodityDetails.setName((String) map1.get("name"));
            commodityDetails.setId(IdGen.uuid());
            commodityDetails.setDeleted(0);
            commodityDetails.setCommodityId(commodity.getId());
            commodityDetails.setSerialNumber(i);
            commodityDetailsMapper.insert(commodityDetails);
            i++;
        }
         commodityMapper.insert(commodity);
    }
    @Transactional
    public void  updataCommodity(Commodity commodity,List<Map<String, Object>> list){
        //根据他的商品id查询出他数据库中的规格表中的id list
        List<String> commodityDetailsIdList = commodityDetailsMapper.selectIdByCommosityId(commodity.getId());
        CommodityDetails commodityDetails;
        List<String> nowCommodityDetailsIdList = new ArrayList<>();
        int j=0; int m=0;
        for(Map<String,Object> map : list){
            //如果是新增的 前端只是传递规格的名称
            if(map.get("id") == null){
                //新增
                commodityDetails = new CommodityDetails();
                commodityDetails.setName((String) map.get("name"));
                commodityDetails.setId(IdGen.uuid());
                commodityDetails.setDeleted(0);
                commodityDetails.setCommodityId(commodity.getId());
                commodityDetailsMapper.insert(commodityDetails);
                j++;
            }else{
                //修改  根据前端传递过来的id来获取他的对象
                commodityDetails = commodityDetailsMapper.selectByPrimaryKey((String) map.get("id"));
                //比较name是否相等来进行修改
                if(!commodityDetails.getName().equals(map.get("name"))){

                    commodityDetails.setName((String) map.get("name"));
                    commodityDetails.setSerialNumber(m);
                    commodityDetailsMapper.updateByPrimaryKey(commodityDetails);
                    m++;
                }
                //将修改过的这些字段暂时保存到 list
                nowCommodityDetailsIdList.add((String) map.get("id"));
            }
        }
        //遍历数据库查询出来的规格id列表

        for(String commodityDetailsId : commodityDetailsIdList){
            //和更改的这个列表进行进行判断
            if(!nowCommodityDetailsIdList.contains(commodityDetailsId)){
                //如果不存在进行删除
                commodityDetailsMapper.updateStateByPrimaryKey(commodityDetailsId);
                //刪除购物车的该规格
                Map<String,Object> param6 =new HashMap<>();
                param6.put("commodityId",commodity.getId());
                param6.put("commodityDetailsId",commodityDetailsId);
               shoppingCartMapper.deleteSpecificationsByPrimaryKeyCommodityId(param6);
            }
        }
        //更新商品基本信息
       commodityMapper.updateByPrimaryKey(commodity);

    }

前端用的 vue  后端接口文档用的eolinker  https://www.eolinker.com/#/?status=link-jump

commodityDetails.setSerialNumber(m); 是用于排序的字段  如果用Mysql的时间排序由于插入的时间太相近区分不出来 ,用自增列数据有时候会很大,所以用自定义数字的方式排序


public MsgResponse add(@RequestBody Map<String, Object> param){

        MsgResponse msgResponse=new MsgResponse();
        if(param==null){
          return   msgResponse.setSuccess(false).setMsg("请填写商品信息");
        }
        //添加商品基本信息
        Commodity commodity=new Commodity();
        BeanUtil.populate(commodity, param);
        String CommodityId = IdGen.uuid();
        commodity.setId(CommodityId);
        commodity.setSalesNumber(0);
        List<Map<String,Object>> specifications1=(List<Map<String,Object>>) param.get("specifications");
        commodityService.addCommodity(commodity,specifications1);
        //添加商品图信息

            CommodityImg commodityImg=new CommodityImg();
                //轮播图
                if(param.get("CommodityDynamicImg")!=null){
                    int j=0;
                    List <String> DynamicImg=(List) param.get("CommodityDynamicImg");
                   for (String di:DynamicImg){
                       commodityImg.setType(1);
                       commodityImg.setImg(di);
                       commodityImg.setId(IdGen.uuid());
                       commodityImg.setCommodityId(CommodityId);
                       commodityImg.setSerialNumber(j);
                       commodityImgService.add(commodityImg);
                       j++;
                   }
                }
                if(param.get("CommodityStaticImg")!=null){
                    //详情图
                    List <String> StaticImg=(List) param.get("CommodityStaticImg");
                    int i=0;
                    for (String si:StaticImg){

                        commodityImg.setType(2);
                        commodityImg.setImg(si);
                        commodityImg.setId(IdGen.uuid());
                        commodityImg.setCommodityId(CommodityId);
                        commodityImg.setSerialNumber(i);
                        commodityImgService.add(commodityImg);
                        i++;
                    }

                }
       return msgResponse.setSuccess(true).setMsg("添加商品成功");
    }

    /**
     * 更新商品信息
     * @param param
     * @return
     */
    @PostMapping("/updateCommodity")
    public MsgResponse updata(@RequestBody Map<String, Object> param) {
        MsgResponse msgResponse = new MsgResponse();
        if (param.get("id") == null || StringUtils.isEmpty((String) param.get("id"))) {
            return msgResponse.setSuccess(false).setMsg("请选择商品信息");
        }
        Commodity commodity = new Commodity();
        BeanUtil.populate(commodity, param);
        //更新商品和规格
        List<Map<String,Object>> specifications=(List<Map<String,Object>>) param.get("specifications");
        commodityService.updataCommodity(commodity,specifications);
        //更新图片信息

            CommodityImg commodityImg = new CommodityImg();

                    //轮播图,更新之前删除原来的数据
                    if (param.get("CommodityDynamicImg") != null) {
                        Map<String,Object> param1 =new HashMap<>();
                        param1.put("commodityId",param.get("id").toString());
                        param1.put("type",1);
                        commodityImgService.deleteByPrimaryKeyCommodityImg(param1);
                        List <String> CommodityDynamicImg=(List) param.get("CommodityDynamicImg");
                        int d=0;
                        for (String ci:CommodityDynamicImg){
                            commodityImg.setId(IdGen.uuid());
                            commodityImg.setImg(ci);
                            commodityImg.setCommodityId(param.get("id").toString());
                            commodityImg.setType(1);
                            commodityImg.setSerialNumber(d);
                            commodityImgService.add(commodityImg);
                            d++;

                        }

                    }
                    if (param.get("CommodityStaticImg") != null) {
                        List <String> CommodityStaticImg=(List) param.get("CommodityStaticImg");
                        int s10=0;
                        //详情图
                        Map<String,Object> param2 =new HashMap<>();
                        param2.put("commodityId",param.get("id").toString());
                        param2.put("type",2);
                        commodityImgService.deleteByPrimaryKeyCommodityImg(param2);
                        for (String csi:CommodityStaticImg){
                            commodityImg.setId(IdGen.uuid());
                            commodityImg.setType(2);
                            commodityImg.setImg(csi);
                            commodityImg.setCommodityId(param.get("id").toString());
                            commodityImg.setSerialNumber(s10);
                            commodityImgService.add(commodityImg);
                            s10++;
                        }

                    }

        return msgResponse.setSuccess(true).setMsg("商品更新成功");
    }

 

 
posted @ 2019-08-12 21:18  Angry-rookie  阅读(442)  评论(0)    收藏  举报