宜立方商城的后台管理(商品管理)——————新增商品

本文主要介绍了如何在宜立方商城后台管理系统中实现新增商品的功能。首先,详细讲述了选择商品类目时的异步请求过程,通过浏览器查看请求路径和参数。接着,讨论了代码实现部分,包括ItemController的编写以及图片上传的处理,特别提到了在不同浏览器中可能出现的兼容性问题。最后,展示了商品信息插入数据库的相关Controller和服务层代码,涉及到MyBatis的使用。
摘要由CSDN通过智能技术生成

一.新增商品

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值