宜立方商城的后台管理(商品管理)——————新增商品
一.新增商品
1.选择类目(效果图)
单击异步每次通过父节点的id查询其子节点的name(所以单击一次节点就会发出一次异步请求)
(1)通过浏览器查看请求路径和参数
2.代码实现
1.ItemController
/** * 异步加载商品类目 * @param itemId * @return */ @RequestMapping("/item/{itemId}") @ResponseBody public TbItem getItemById(@PathVariable Long itemId) { TbItem tbItem = itemService.getItemById(itemId); return tbItem; }2.ItemServiceImpl
@Override public TbItem getItemById(Long itemId) { //根据主键查询 //TbItem tbItem = itemMapper.selectByPrimaryKey(itemId); TbItemExample example = new TbItemExample(); //获取创建Criteria对象 TbItemExample.Criteria criteria = example.createCriteria(); //设置查询条件 criteria.andIdEqualTo(itemId); //执行查询 List<TbItem> list = itemMapper.selectByExample(example); if (list != null && list.size() > 0) { return list.get(0); } return null; // return tbItem; }
2.上传图片 注:有些浏览器兼容问题会出现“上传失败”例如:用Map集合返回这样的json 格式Content-Type: application/json;charset=UTF-8只要谷歌浏览器可以上传成功其他的都不行
1.
PictureController
//解决硬编码问题 @Value("${IMAGE_SERVER_URL}") private String IMAGE_SERVER_URL; /** * 图片上传功能实现
/** * 图片上传处理 */ @Controller public class PictureController { @Value("${IMAGE_SERVER_URL}") private String IMAGE_SERVER_URL; /** * 图片上传功能实现 * KindEditor的多图片上传插件最后响应的content-type是text/plan格式的json字符串。兼容性是最好的。 * @param uploadFile * @return */ @RequestMapping(value = "/pic/upload",produces = MediaType.TEXT_PLAIN_VALUE+";charset=utf-8") @ResponseBody public String fileUpload(MultipartFile uploadFile){ try { //1、取文件的扩展名 String filename = uploadFile.getOriginalFilename(); String extName = filename.substring(filename.lastIndexOf(".") + 1); //2、创建一个FastDFS的客户端 FastDFSClient fastDFSClient = new FastDFSClient("classpath:conf/client.conf"); //3、执行上传处理返回图片路径 String path = fastDFSClient.uploadFile(uploadFile.getBytes(), extName); //4、拼接返回的url和ip地址,拼装成完整的url String url =IMAGE_SERVER_URL+ path; //5、返回map Map result = new HashMap<>(); result.put("error", 0); result.put("url", url); return JsonUtils.objectToJson(result); }catch (Exception e){ e.printStackTrace(); //5、返回map Map result = new HashMap<>(); result.put("error", 1); result.put("message", "图片上传失败"); return JsonUtils.objectToJson(result); } } }
springmvc.xml中配置
<!--加载配置文件--> <context:property-placeholder location="classpath:conf/resource.properties"/>
<!-- 定义文件上传解析器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设定默认编码 --> <property name="defaultEncoding" value="UTF-8"></property> <!-- 设定文件上传的最大值5MB,5*1024*1024 --> <property name="maxUploadSize" value="5242880"></property> </bean>
两个配置文件
最终提交插入的商品信息代码
1.Controller 代码
/** * 新增商品功能实现 * @param tbItem 商品信息 * @param desc 描述信息 * @return */ @RequestMapping(value = "/item/save") @ResponseBody public E3Result addItem(TbItem tbItem,String desc){ E3Result result = itemService.addItem(tbItem, desc); return result; }
2.Service代码 注:这个插入涉及到了两个pojo的数据所有mybatis对应的注入来操作
@Autowired private TbItemMapper itemMapper; @Autowired private TbItemDescMapper tbItemDescMapper;
@Override public E3Result addItem(TbItem item, String desc) { //生成商品id long itemId = IDUtils.genItemId(); //补全TbItem属性 item.setId(itemId); //商品状态,1-正常,2-下架,3-删除 item.setStatus((byte) 1); Date date = new Date(); item.setCreated(date); item.setUpdated(date); // 3、向商品表插入数据 itemMapper.insert(item); // 4、创建一个TbItemDesc对象 TbItemDesc itemDesc=new TbItemDesc(); // 5、补全TbItemDesc的属性 itemDesc.setItemId(itemId); itemDesc.setItemDesc(desc); itemDesc.setCreated(date); itemDesc.setUpdated(date); // 6、向商品描述表插入数据 tbItemDescMapper.insert(itemDesc); // 7、E3Result.ok() return E3Result.ok(); }