008新增/修改商品(图片上传)

1图片上传

1.1 需求分析

kindeditor中文件上传所需要数据
在这里插入图片描述

1.2.包装类

package com.cdsxt.ego.beans;

import java.io.Serializable;

public class PictureResult implements Serializable {
	
	//设置图片是否上传成功的状态0成功,1失败
	private Integer error;
	//上传图片之后,图片所在服务器上的url;
	private String url;
	//响应大客户端的提示信息
	private String message;
	public Integer getError() {
		return error;
	}
	public void setError(Integer error) {
		this.error = error;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
	public static PictureResult ok(String url) {
		PictureResult pr = new PictureResult();
		pr.setError(0);
		pr.setMessage("ok");
		pr.setUrl(url);
		return pr;
	}
	public static PictureResult error() {
		PictureResult pr = new PictureResult();
		pr.setError(1);
		pr.setMessage("error");
		return pr;
	}
	
}

1.3.工具类

1.3.1文件上传工具

package com.cdsxt.ego.utils;

import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

public class FtpUtil {
	
	public static boolean uploadFile(String hostname, int port, String username,			
			String password,String pathname, String remote, InputStream local) {
		boolean flag = false;
		try {
			//1创建FTPClient对象
			FTPClient client = new FTPClient();
			//2建立和ftp服务器的连接
			client.connect(hostname, port);
			//3登录ftp服务器
			client.login(username, password);
			//4设置上传的文件类型
			client.setFileType(FTP.BINARY_FILE_TYPE);
			
			//5防止目录不存在,创建目录
			client.makeDirectory(pathname);
			//6切换工作目录,文件上传需要保存到那个目录
			client.changeWorkingDirectory(pathname);
			//7实现文件上传
			flag = client.storeFile(remote,local);
			if(flag) {
				System.out.println("上传成功!");
			}else {
				System.out.println("上传失败!");
				
			}
			//关闭流
			local.close();
			//退出登录
			client.logout();
			//断开连接
			client.disconnect();
			
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return flag;
	}

}

1.3.2文件名与商品ID生成工具

package com.cdsxt.ego.utils;

import java.util.Random;

public class IDUtils {
	/**
	 * 图片名生成
	 */
	public static String getImageName() {
		//去当前时间的长整行
		long millis = System.currentTimeMillis();
		//加上三位随机数
		Random random = new Random();
		int end3 = random.nextInt(1000);
		String str = millis+String.format("%03d", end3);
		return str;
	}
	
	/*
	 * 商品id生成
	 */
	public static long getItemId() {
		//取当前的长整型
		long millis = System.currentTimeMillis();
		//加上两位随机数
		Random random = new Random();
		int end2 = random.nextInt(99);
		//如果前面不足两位补0
		String str = millis +String.format("%02d", end2);
		return new Long(str);
				
	}
	public static void main(String[] args) {
		for(int i=0;i< 100;i++)
		System.out.println(getItemId());
	}

}

1.4.消费接口

/**
	 * 完成图片的上传
	 * @param file
	 * @return
	 */
	public PictureResult uploadItemPic(MultipartFile file);

1.5 消费端实现类

package com.cdsxt.ego.manager.service.impl;

import java.io.InputStream;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.cdsxt.ego.beans.EgoResult;
import com.cdsxt.ego.beans.PageResult;
import com.cdsxt.ego.beans.PictureResult;
import com.cdsxt.ego.manager.service.ManagerItemService;
import com.cdsxt.ego.rpc.pojo.Item;
import com.cdsxt.ego.rpc.pojo.ItemDesc;
import com.cdsxt.ego.rpc.service.ItemService;
import com.cdsxt.ego.utils.FtpUtil;
import com.cdsxt.ego.utils.IDUtils;
@Service
public class ManagerItemServiceImpl implements ManagerItemService {
	

	@Autowired
	private ItemService itemServiceProxy;
	@Value("${FTP_HOST}")
	private String FTP_HOST;
	@Value("${FTP_PORT}")
	private Integer FTP_PORT;
	@Value("${FTP_USERNAME}")
	private String FTP_USERNAME;
	@Value("${FTP_PASSWORD}")
	private String FTP_PASSWORD;
	@Value("${FTP_PATH}")
	private String FTP_PATH;
	@Value("${IMAGE_HTTP_PATH}")
	private String IMAGE_HTTP_PATH;
/*图片上传
	 * 
	 */
	@Override
	public PictureResult uploadItemPic(MultipartFile file) {
		// TODO Auto-generated method stub
		boolean falg = false;
		String fileName = null;
		try {
			//1获取信息的文件名字
			fileName = IDUtils.getImageName();
			//2获得上传文件的原始名字
			String oriName = file.getOriginalFilename();
			//3获取拓展名
			String ext = oriName.substring(oriName.lastIndexOf("."));
			//4生成新的文件名
			fileName = fileName+ext;
			//5获取流对象
			InputStream local = file.getInputStream();
			//6实现文件上传到ftp
			falg = FtpUtil.uploadFile(FTP_HOST, FTP_PORT, FTP_USERNAME, FTP_PASSWORD, FTP_PATH, fileName, local);
		}catch(Exception e) {
			e.printStackTrace();
			falg =false;
		}
		if(falg) {
			return PictureResult.ok(IMAGE_HTTP_PATH+"/"+fileName);
		}else {
			return PictureResult.error();
		}
	}
}

1.6 控制器

package com.cdsxt.ego.manager.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.cdsxt.ego.beans.PictureResult;
import com.cdsxt.ego.manager.service.ManagerItemService;

@Controller
public class ItemPictureController {
	@Autowired
	private ManagerItemService managerItemService;
	@RequestMapping(value="/pic/upload",produces=MediaType.APPLICATION_JSON_VALUE+";charset=UTF-8")
	@ResponseBody
	public PictureResult uploadItemPic(MultipartFile uploadFile) {
		return managerItemService.uploadItemPic(uploadFile);
	}
}

2新增/修改商品

2.1需求分析

同过前面图片上传用到的工具类得到商品的id

2.2服务端接口

/*
	 * 添加商品
	 * 
	 */
	public Boolean insertItem(Item item, ItemDesc itemDesc);
	/*
	 * 修改商品
	 * 
	 */
	public Boolean updateItem(Item item, ItemDesc itemDesc);

2.3服务端实现类

/*添加商品
	 */
	
	@Override
	public Boolean insertItem(Item item, ItemDesc itemDesc) {
		// TODO Auto-generated method stub
		int insert = itemMapper.insert(item);
		int insert2 = itemDescMapper.insert(itemDesc);
		if(insert!=0&&insert2!=0) {
			return true;
		}
		return false;
	}
	/*修改商品
	 */
	
	@Override
	public Boolean updateItem(Item item, ItemDesc itemDesc) {
		// TODO Auto-generated method stub
		int update = itemMapper.updateByPrimaryKeySelective(item);
		int update2 = itemDescMapper.updateByPrimaryKeySelective(itemDesc);
		if(update!=0&&update2!=0) {
			return true;
		}
		return false;
	}

2.4消费端接口

/*
	 * 新增
	 */
	public EgoResult itemSeave(Item item, String desc);
	/*
	 * 修改
	 */
	public EgoResult itemUpdate(Item item, String desc);

2.5消费端实现类

/*新增
	 */
	@Override
	public EgoResult itemSeave(Item item, String desc) {
		// TODO Auto-generated method stub
		Long id = IDUtils.getItemId();
		Date date = new Date();
		//设置item的值
		item.setId(id);
		item.setStatus((byte) 1);
		item.setUpdated(date);
		item.setCreated(date);
		//设置desc的值
		ItemDesc itemDesc = new ItemDesc();
		itemDesc.setItemId(id);
		itemDesc.setItemDesc(desc);
		itemDesc.setCreated(date);
		itemDesc.setUpdated(date);
		Boolean flag = itemServiceProxy.insertItem(item, itemDesc);
		if(flag) {
			return EgoResult.ok();
		}else {
			return EgoResult.error("error");
		}
	}
	/*修改
	 */
	
	@Override
	public EgoResult itemUpdate(Item item, String desc) {
		// TODO Auto-generated method stub
		Date date = new Date();
		//设置item
		item.setUpdated(date);
		//设置desc
		ItemDesc itemDesc= new ItemDesc();
		itemDesc.setItemId(item.getId());
		itemDesc.setItemDesc(desc);
		itemDesc.setUpdated(date);
		Boolean flag= itemServiceProxy.updateItem(item, itemDesc);
		if(flag) {
			return EgoResult.ok();
		}else {
			return EgoResult.error("error");
		}
	}

2.6控制器

/*
	 * 添加商品
	 */
	@RequestMapping("/item/save")
	@ResponseBody
	public EgoResult itemSeave(Item item, String desc) {
		return managerItemService.itemSeave(item, desc);
	}
	/*
	 * 
	 * 修改商品
	 */
	@RequestMapping("/item/update")
	@ResponseBody
	public EgoResult itemUpdate(Item item, String desc) {
		return managerItemService.itemUpdate(item, desc);
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值