商城笔记day04

**

一、添加商品的功能实现

**
请求url:/item/save
参数:表单的数据。使用pojo类型接收。要求pojo属性名和表单input的那么属性名相同。TBItem类。
返回值:使用easyUIResult
EasyUIResult类代码如下
:`import java.util.List;

public class EasyUIResult {

private Integer total;

private List<?> rows;

public EasyUIResult(Integer total, List<?> rows) {
	this.total = total;
	this.rows = rows;
}

public EasyUIResult(long total, List<?> rows) {
	this.total = (int) total;
	this.rows = rows;
}

public Integer getTotal() {
	return total;
}
public void setTotal(Integer total) {
	this.total = total;
}
public List<?> getRows() {
	return rows;
}
public void setRows(List<?> rows) {
	this.rows = rows;
}

}`
service层实现
对商品属性的补全:
生成主键策略:使用获取当前时间(精确到毫秒)加上两位随机数。
IDUtils:

import java.util.Random;

public class IDUtils {

	/**
	 * 图片名生成
	 */
	public static String genImageName() {
		//取当前时间的长整形值包含毫秒
		long millis = System.currentTimeMillis();
		//long millis = System.nanoTime();
		//加上三位随机数
		Random random = new Random();
		int end3 = random.nextInt(999);
		//如果不足三位前面补0
		String str = millis + String.format("%03d", end3);
		
		return str;
	}
	
	/**
	 * 商品id生成
	 */
	public static long genItemId() {
		//取当前时间的长整形值包含毫秒
		long millis = System.currentTimeMillis();
		//long millis = System.nanoTime();
		//加上两位随机数
		Random random = new Random();
		int end2 = random.nextInt(99);
		//如果不足两位前面补0
		String str = millis + String.format("%02d", end2);
		long id = new Long(str);
		return id;
	}
}

编辑商品
请求url:/rest/item/update
和保存商品类似,同理。

删除商品
请求url:/rest/item/delete
请求参数:ids,使用Long[] ids 接收

下架商品
请求url:/rest/item/instock
请求参数:ids,使用Long[] ids 接收

删除商品
请求url: /rest/item/reshelf
请求参数:ids,使用Long[] ids 接收

一、图片服务器FastDFS

要求:
1、存储空间可扩展
2、提供一个统一的访问方式
使用fastDFS,分布式文件系统。存储空间可以横向扩展(内存不够时可以通过添加硬盘或加服务器扩展内存),可以实现服务器的高可用(如果服务器挂了可以使用另一台),支持每个节点有备份机。
二、FastDFS架构
FastDFS架构包括 tracker server 和 storage server。客户端请求Tracker server进行文件上传和文件下载,通过Tracker server 调度storage server最终完成图片上传和图片下载。
Tracker Server的作用是负载均衡和调度,通过tracker server在文件上传时通过一些策略调度Storage server提供文件上传服务,被称为最终服务器或调度服务器。
Storage server作用是文件存储。上传的文件最终存储在storage服务器上,storage server并没有实现自己的文件系统,使用的是操作系统的文件系统来管理文件。被称为存储服务器。
在这里插入图片描述
tracker集群和storage集群。
storage集群分为多个组,每个组中并没有主从关系,都是平等的,谁空闲谁干活。
storage会定期的想tracker上传状态信息,告诉storage群现在的状况。
我使用的是最简单的FastDFS结构:tracker server服务器只有一台,并且与storage 安装在同一台服务器上,storage也只有一台,一个组且组里只有一个成员。

2.2图片上传流程
在这里插入图片描述
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
在这里插入图片描述

组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
2.3下载文件流程
在这里插入图片描述

使用的是最简单的fastDFS架构。
在这里插入图片描述
一个trackerServer,storage群只有一个组,组里也只有一个StorageServer。

上传图片功能实现

1、创建一个配置文件,存储trackerServer地址ip端口号。
代码

String url = upload(file.getBytes(),ext);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值