添加店铺失败,

来源:3-5 前后端联调验证整体模块功能

慕UI0732386

2020-01-05 19:42:53

前端json转化为类时出现问题了,shop的属性都是null,只有区域和类别不为空,shopStr是有值http://img.mukewang.com/climg/5e11cab708e0a13515791033.jpg

写回答

6回答

好帮手慕柯南

2020-01-06

同学你好!

你的数据没有问题呢

  1. 你的shopstr中本来就没有这三个值,没有打印输出正常

    http://img.mukewang.com/climg/5e12a4860937c1e111010503.jpg

    在页面也没有给这三个属性赋值,所以打印输出为null没有问题

    http://img.mukewang.com/climg/5e12a4c10927a8cb05880558.jpg

  2. 以下位置shop为null,是因为你的转化语句还没有执行

    http://img.mukewang.com/climg/5e12a4fa0969ec5613120297.jpg

  3. 数据库中没有数据,是指整条数据没有插入呢,还是某个字段没有值,如果整条数据都没有插入,你的控制台是否报错了呢?

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

0

慕UI0732386

提问者

2020-01-05

数据库里也没有数据,拜托老师看一下,感谢

0

慕UI0732386

提问者

2020-01-05

http://img.mukewang.com/climg/5e11edda088d993a18560484.jpg

0

慕UI0732386

提问者

2020-01-05

@RequestMapping(value = "/registershop",method = RequestMethod.POST)
@ResponseBody
private Map<String, Object> registerShop(HttpServletRequest request) {
    Map<String, Object> modelMap = new HashMap<String, Object>();
    if (!CodeUtil.checkVerifyCode(request)) {
        modelMap.put("success", false);
        modelMap.put("errMsg", "输入了错误的验证码");
        return modelMap;
    }
    // 1.接收并转化相应的参数,包括店铺信息以及图片信息
    String shopStr = HttpServletRequestUtil.getString(request, "shopStr");
    ObjectMapper mapper = new ObjectMapper();
    Shop shop = null;
    try {
        shop = mapper.readValue(shopStr, Shop.class);
        System.out.println(shop.getShopId());
        System.out.println(shopStr);

    } catch (Exception e) {
        modelMap.put("success", false);
        modelMap.put("errMsg", e.getMessage());
        return modelMap;
    }
    System.out.println(shop.getAdvice());
    CommonsMultipartFile shopImg = null;
    CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(
            request.getSession().getServletContext());
    if (commonsMultipartResolver.isMultipart(request)) {
        MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
        shopImg = (CommonsMultipartFile) multipartHttpServletRequest.getFile("shopImg");
    } else {
        modelMap.put("success", false);
        modelMap.put("errMsg", "上传图片不能为空");
        return modelMap;
    }
    // 2.注册店铺
    if (shop != null && shopImg != null) {
        PersonInfo owner = (PersonInfo) request.getSession().getAttribute("user");
        owner.setUserId(1L);
        shop.setOwner(owner);
        ShopExecution se = null;
        try {
            se = shopService.addShop(shop, shopImg.getInputStream(), shopImg.getOriginalFilename());
            if(se.getState() == ShopStateEnum.CHECK.getState()){
                modelMap.put("success",true);
                //该用户可以操作的店铺列表
                @SuppressWarnings("unchecked")
                List<Shop> shopList = (List<Shop>)request.getSession().getAttribute("shoplist");
                if(shopList == null || shopList.size() == 0) {
                    shopList = new ArrayList<Shop>();
                }
                shopList.add(se.getShop());
                request.getSession().setAttribute("shopList", shopList);
            }else{
                modelMap.put("success", false);
                modelMap.put("errMsg", se.getStateInfo());
            }
        } catch (ShopOperationException e){
            modelMap.put("success", false);
            modelMap.put("errMsg", e.getMessage());
        } catch (IOException e) {
            modelMap.put("success", false);
            modelMap.put("errMsg", e.getMessage());
        }
        return modelMap;
    } else {
        modelMap.put("success", false);
        modelMap.put("errMsg", "请输入店铺信息");
        return modelMap;
    }
}


0

慕UI0732386

提问者

2020-01-05

public class ImageUtil {
   private static String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
   private static final SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
   private static final Random r = new Random();
   private static Logger logger = LoggerFactory.getLogger(ImageUtil.class);

   /**
    * 将CommonsMultipartFile转换成File类
    *
    * @param cFile
    * @return
    */
   public static File transferCommonsMultipartFileToFile(CommonsMultipartFile cFile) {
      File newFile = new File(cFile.getOriginalFilename());
      try {
         cFile.transferTo(newFile);
      } catch (IllegalStateException e) {
         logger.error(e.toString());
         e.printStackTrace();
      } catch (IOException e) {
         logger.error(e.toString());
         e.printStackTrace();
      }
      return newFile;
   }

   /**
    * 处理缩略图,并返回新生成图片的相对值路径
    *
    * @param thumbnailInputStream
    * @param targetAddr
    * @return
    */
   public static String generateThumbnail(InputStream thumbnailInputStream, String fileName, String targetAddr) {
      // 获取不重复的随机名
      String realFileName = getRandomFileName();
      // 获取文件的扩展名如png,jpg等
      String extension = getFileExtension(fileName);
      // 如果目标路径不存在,则自动创建
      makeDirPath(targetAddr);
      // 获取文件存储的相对路径(带文件名)
      String relativeAddr = targetAddr + realFileName + extension;
      logger.debug("current relativeAddr is :" + relativeAddr);
      // 获取文件要保存到的目标路径
      File dest = new File(PathUtil.getImgBasePath() + relativeAddr);
      logger.debug("current complete addr is :" + PathUtil.getImgBasePath() + relativeAddr);
      logger.debug("basePath is :" + basePath);
      // 调用Thumbnails生成带有水印的图片
      try {
         Thumbnails.of(thumbnailInputStream).size(200, 200)
               .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File(basePath + "/watermark.jpg")), 0.25f)
               .outputQuality(0.8f).toFile(dest);
      } catch (IOException e) {
         logger.error(e.toString());
         throw new RuntimeException("创建缩略图失败:" + e.toString());
      }
      // 返回图片相对路径地址
      return relativeAddr;
   }


   /**
    * 创建目标路径所涉及到的目录,即/home/work/xiangze/xxx.jpg, 那么 home work xiangze
    * 这三个文件夹都得自动创建
    *
    * @param targetAddr
    */
   private static void makeDirPath(String targetAddr) {
      String realFileParentPath = PathUtil.getImgBasePath() + targetAddr;
      File dirPath = new File(realFileParentPath);
      if (!dirPath.exists()) {
         dirPath.mkdirs();
      }
   }

   /**
    * 获取输入文件流的扩展名
    *
    * @param fileName
    * @return
    */
   private static String getFileExtension(String fileName) {
      return fileName.substring(fileName.lastIndexOf("."));
   }

   /**
    * 生成随机文件名,当前年月日小时分钟秒钟+五位随机数
    *
    * @return
    */
   public static String getRandomFileName() {
      // 获取随机的五位数
      int rannum = r.nextInt(89999) + 10000;
      String nowTimeStr = sDateFormat.format(new Date());
      return nowTimeStr + rannum;
   }

   public static void main(String[] args) throws IOException {
      Thumbnails.of(new File("/Users/baidu/work/image/xiaohuangren.jpg")).size(200, 200)
            .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File(basePath + "/watermark.jpg")), 0.25f)
            .outputQuality(0.8f).toFile("/Users/baidu/work/image/xiaohuangrennew.jpg");
   }

   /**
    * storePath是文件的路径还是目录的路径, 如果storePath是文件路径则删除该文件,
    * 如果storePath是目录路径则删除该目录下的所有文件
    *
    * @param storePath
    */
   public static void deleteFileOrPath(String storePath) {
      File fileOrPath = new File(PathUtil.getImgBasePath() + storePath);
      if (fileOrPath.exists()) {
         if (fileOrPath.isDirectory()) {
            File files[] = fileOrPath.listFiles();
            for (int i = 0; i < files.length; i++) {
               files[i].delete();
            }
         }
         fileOrPath.delete();
      }
   }
}


0

慕UI0732386

提问者

2020-01-05

// 提交按钮的事件响应,分别对店铺注册和编辑操作做不同响应
$('#submit').click(function() {
   // 创建shop对象
   var shop = {};
   if (isEdit) {
      // 若属于编辑,则给shopId赋值
      shop.shopId = shopId;
   }
   // 获取表单里的数据并填充进对应的店铺属性中
   shop.shopName = $('#shop-name').val();
   shop.shopAddr = $('#shop-addr').val();
   shop.phone = $('#shop-phone').val();
   shop.shopDesc = $('#shop-desc').val();
   // 选择选定好的店铺类别
   shop.shopCategory = {
      shopCategoryId : $('#shop-category').find('option').not(function() {
         return !this.selected;
      }).data('id')
   };
   // 选择选定好的区域信息
   shop.area = {
      areaId : $('#area').find('option').not(function() {
         return !this.selected;
      }).data('id')
   };
   // 获取上传的图片文件流
   var shopImg = $('#shop-img')[0].files[0];
   // 生成表单对象,用于接收参数并传递给后台
   var formData = new FormData();
   // 添加图片流进表单对象里
   formData.append('shopImg', shopImg);
   // 将shop json对象转成字符流保存至表单对象key为shopStr的的键值对里
   formData.append('shopStr', JSON.stringify(shop));
   // 获取表单里输入的验证码
   var verifyCodeActual = $('#j_captcha').val();
   if (!verifyCodeActual) {
      $.toast('请输入验证码!');
      return;
   }
   formData.append('verifyCodeActual', verifyCodeActual);
   // 将数据提交至后台处理相关操作
   $.ajax({
      url : (isEdit ? editShopUrl : registerShopUrl),
      type : 'POST',
      data : formData,
      contentType : false,
      processData : false,
      cache : false,
      success : function(data) {
         if (data.success) {
            $.toast('提交成功!');
            if (!isEdit) {
               // 若为注册操作,成功后返回店铺列表页
               window.location.href = "/o2o/shopadmin/shoplist";
            }
         } else {
            $.toast('提交失败!' + data.errMsg);
         }
         // 点击验证码图片的时候,注册码会改变
         $('#captcha_img').click();
      }
   });
});


0

0 学习 · 8263 问题

查看课程