基于javaweb+mysql的springboot智能相册管理系统图片相册(java+springboot+maven+vue+mysql+redis)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Node.js≥10
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot智能相册管理系统图片相册(java+springboot+maven+vue+mysql+redis)
前端启动命令:npm run serve
后端启动类:StartApplication
登录:
user1 123456
/**
* 分页按时间查询指定用户所有图片
* @param userId
* @param currentPage
* @param pageSize
* @param imageDate
* @return
*/
@Override
public ImageVO selectAllImageByTime(Integer userId, Integer currentPage, Integer pageSize, Date imageDate) {
PageHelper.startPage(currentPage,pageSize);
List<Image> images = imageMapper.selectAllImageByTime(userId,imageDate);
List<String> pres = new ArrayList<>();
for (Image i:images){
pres.add(i.getImageUrL());
}
Integer integer = imageMapper.selectImageCountByTime(userId,imageDate);
ImageVO imageVO = new ImageVO(images,pres,integer);
return imageVO;
}
/**
* 查询图片时间和类型
* @param userId
* @return
*/
@Override
public AllTimeTypeVO selectTimeType(Integer userId) {
List<Date> dates = imageMapper.selectAllImageTime(userId);
//将null时间删掉
for(int i=0;i<dates.size();i++){
if(dates.get(i)==null){
dates.remove(i);
}
}
List<String> strings = imageMapper.selectAllImageType(userId);
AllTimeTypeVO allTimeTypeVO = new AllTimeTypeVO(strings,dates);
return allTimeTypeVO;
}
/**
* 删除图片,加入回收站
* @param userId
* @param imageId
*/
@Resource
RecordService recordService;
@Resource
TokenUtil tokenUtil;
//选择全部
@RequestMapping("/selectAll")
public JSONObject selectImage(String token){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
JSONObject res = recycleService.selectAll(userId);
System.out.println(res);
jsonObject.put("data",res);
jsonObject.put("status","success");
return jsonObject;
}
//恢复照片
@RequestMapping("/recoverImage")
public JSONObject recoverImage(HttpServletRequest req,String token,@RequestParam("imageId")List<Integer> imageId){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
System.out.println(imageId);
recycleService.recoverImage(userId,imageId);
jsonObject.put("status","success");
recordService.addRecord(req,Operation.recoverImage.getName(), imageId.size(),userId);
public JSONObject selectAllImageByTime(String token,Integer currentPage,Integer pageSize,String imageDate) throws ParseException {
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Date imgDate = dateFormat.parse(imageDate);
System.out.println(imageDate);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
ImageVO imageVO = imageService.selectAllImageByTime(userId,currentPage,pageSize,imgDate);
jsonObject.put("data",imageVO);
jsonObject.put("status","success");
return jsonObject;
}
//根据ID删除图片
@RequestMapping("/delete")
public JSONObject deleteImage(HttpServletRequest req,String token, @RequestParam("imageId") List<Integer> imageId) {
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
imageService.deleteImage(userId,imageId);
jsonObject.put("status","success");
recordService.addRecord(req,Operation.addRecycle.getName(), imageId.size(),userId);
return jsonObject;
}
}
if (albumId == 0) {
Album album = new Album();
album.setUserId(userId);
album.setAlbumName(albumName);
album.setAlbumImg(imageList.get(0).getCompressUrL());
albumMapper.addAlbum(album);
//添加记录
recordService.addRecord(req, Operation.createAlbum.getName()+"\""+albumName+"\"",1,userId);
albumMapper.addAlbumImage(album.getAlbumId(),imageIds);
recordService.addRecord(req, Operation.addImageToAlbum.getName()+"\""+albumName+"\"",imageIds.size(),userId);
}
else{
if(albumId > 0){
albumMapper.addAlbumImage(albumId,imageIds);
recordService.addRecord(req, Operation.addImageToAlbum.getName()+"\""+albumName+"\"",imageIds.size(),userId);
}
}
}
return true;
}
/**
* AI智能识别上传
* @param imageList
* @param userId
* @param albumId
* @param albumName
* @param count
* @return
* @throws Exception
*/
@Override
@Transactional(rollbackFor = Exception.class)
public JSONArray AIUploadImage(HttpServletRequest req,List<Image> imageList, Integer userId, Integer albumId, String albumName, int count) throws Exception {
//添加图片
imageMapper.addImages(imageList);
//返回图片id集合
JSONArray data = new JSONArray();
List<Integer> imageIds = new ArrayList<>();
int i=0;
for (Image image : imageList) {
imageIds.add(image.getImageId());
float fileSize = image.getImageSize();
//
recordService.addRecord(req, Operation.uploadImage.getName(),imgList.size(),userId);
}
else{
for(Image i:imgList){
String imageUrL = i.getImageUrL();
fileServeUtil.deleteServe(imageUrL);
}
jsonObject.put("status","fail");
}
return jsonObject;
}
//ai上传图片
@RequestMapping("/uploadAI")
public JSONObject uploadAI(HttpServletRequest req,String token, @RequestParam("file")MultipartFile[] multipartFiles,String albumName,Integer albumId,String imgSite, String imgDate,Integer resNumber) throws Exception {
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
String userName;
if(user!=null) {
userId = user.getUserId();
userName = user.getUserName();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
Date imageDate ;
if(imgDate.equals("null")||imgDate.equals("")){
imageDate=null;
}
else {
imageDate = dateFormat.parse(imgDate);
}
if(imgSite==null||imgSite.equals("")){
imgSite= "其它";
}
List<Image> imgList = new ArrayList<>();
//将所有上传的图片对象存入集合
for (MultipartFile m:multipartFiles){
String fileName = m.getOriginalFilename();
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void addAlbum(HttpServletRequest req, String albumName, Integer userId) {
Album album = new Album();
album.setAlbumImg(defaultAlbum);
album.setUserId(userId);
album.setAlbumName(albumName);
System.out.println(album);
albumMapper.addAlbum(album);
recordService.addRecord(req, Operation.createAlbum.getName()+"\""+albumName+"\"", 1,userId);
}
@Override
public void setAlbumCover( Integer albumId, Integer imageId) {
albumMapper.uploadAlbum(albumId,imageId);
}
/**
* 查询相册
* @param userId
* @return
*/
@Override
public List<PartAlbumVO> selectAllAlbum(Integer userId) {
if(userId==null){
return null;
}
List<PartAlbumVO> partAlbumVO = albumMapper.selectAllAlbum(userId);
return partAlbumVO;
}
/**
* 将图片添加至相册
* @param albumId
* @param imageId
*/
@Override
public void addImageToAlbum(HttpServletRequest req,Integer albumId, List<Integer> imageId,Integer userId) {
albumMapper.addAlbumImage(albumId,imageId);
String albumName = albumMapper.selectAlbum(albumId);
recordService.addRecord(req, Operation.addImageToAlbum.getName()+"\""+albumName+"\"", imageId.size(),userId);
}
/**
* 将图片移除相册
* @param albumId
* @param imageId
*/
@Override
public void removeImageToAlbum(HttpServletRequest req,Integer albumId, List<Integer> imageId,Integer userId) {
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
recordService.addRecord(req, Operation.downloadImage.getName(),number,userId);
jsonObject.put("status","success");
return jsonObject;
}
//选择全部
@RequestMapping("/selectAll")
public JSONObject selectAllRecord(String token) throws ParseException {
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
List<Record> records = recordService.selectAllRecord(userId);
jsonObject.put("status","success");
jsonObject.put("data",records);
return jsonObject;
}
//删除全部
@RequestMapping("/deleteAll")
public JSONObject deleteAllRecord(String token){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
@Service
public class AlbumServiceImpl implements AlbumService {
@Resource
AlbumMapper albumMapper;
@Resource
RecordService recordService;
@Resource
DateUtil dateUtil;
private String defaultAlbum = "/static/album/albumImg.png";
/**
* 添加相册
* @param albumName
* @param userId
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void addAlbum(HttpServletRequest req, String albumName, Integer userId) {
Album album = new Album();
album.setAlbumImg(defaultAlbum);
album.setUserId(userId);
album.setAlbumName(albumName);
System.out.println(album);
albumMapper.addAlbum(album);
recordService.addRecord(req, Operation.createAlbum.getName()+"\""+albumName+"\"", 1,userId);
}
@RestController
@RequestMapping("/album")
public class AlbumController {
@Resource
AlbumService albumService;
@Resource
RecordService recordService;
@Resource
TokenUtil tokenUtil;
//选择相册名称
@RequestMapping("/selectAlbumName")
public JSONObject selectAlbumName(String token){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
if(user==null){
jsonObject.put("status","fail");
return jsonObject;
}
List<PartAlbumVO> partAlbumVOS = albumService.selectAllAlbum(user.getUserId());
jsonObject.put("status","success");
jsonObject.put("data", partAlbumVOS);
return jsonObject;
}
//将图片添加相册
@RequestMapping("/addImageToAlbum")
public JSONObject addImageToAlbum(HttpServletRequest req, String token, @RequestParam("imageId") List<Integer> imageId, Integer albumId ){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
if(user==null){
jsonObject.put("status","fail");
return jsonObject;
}
albumService.addImageToAlbum(req,albumId,imageId,user.getUserId());
jsonObject.put("status","success");
return jsonObject;
}
//从相册中删除图像
}
else{
b =dateFormat.parse(birthday);
}
userToken.setBirthday(b);
userService.updateUser(userToken);
jsonObject.put("status", "success");
return jsonObject;
}
@RequestMapping("/updateAvatar")
public JSONObject updateUserAvatar(String token,@RequestParam("file") MultipartFile multipartFile) throws IOException {
JSONObject jsonObject = new JSONObject();
User userToken = tokenUtil.jwtParser(token);
if(userToken==null){
jsonObject.put("status", "fail");
return jsonObject;
}
String userName = userToken.getUserName();
//上传类型是头像,文件夹名采用用户名
String avatarPath = fileServeUtil.uploadServe("avatar", userName, multipartFile);
if(userToken!=null){
userToken.setAvatar(avatarPath);
}
System.out.println(userToken);
userService.updateUserAvatar(userToken);
jsonObject.put("status", "success");
return jsonObject;
}
}
@Resource
private TokenUtil tokenUtil;
@Resource
RedisUtil redisUtil;
@Resource
private UserService userService; //用户服务
@Resource
private FileServeUtil fileServeUtil;
//默认头像
private String defaultAvatar = "/static/avatar/1default.jpg";
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
/**
* 用户注册
* @param userName
* @param passWord
* @param email
* @param codeNumber
* @return
*/
@RequestMapping("/add")
public JSONObject addUser(@RequestParam("username")String userName,@RequestParam("password")String passWord,String email,String codeNumber){
JSONObject jsonObject = new JSONObject();
if(userService.selectUserName(userName)!=null){
jsonObject.put("status","exist");
return jsonObject;
}
System.out.println(email);
String redisCode = redisUtil.get(email);
if(!codeNumber.equals(redisCode)){
jsonObject.put("status","codeError");
return jsonObject;
}
User user = new User(null,userName,passWord,null,email,null,null,null,5000,defaultAvatar);
userService.addUser(user);
jsonObject.put("status","success");
return jsonObject;
}
jsonObject.put("status","success");
return jsonObject;
}
//恢复照片
@RequestMapping("/recoverImage")
public JSONObject recoverImage(HttpServletRequest req,String token,@RequestParam("imageId")List<Integer> imageId){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
System.out.println(imageId);
recycleService.recoverImage(userId,imageId);
jsonObject.put("status","success");
recordService.addRecord(req,Operation.recoverImage.getName(), imageId.size(),userId);
return jsonObject;
}
//删除照片
@RequestMapping("/deleteImage")
public JSONObject deleteImage(HttpServletRequest req, String token, @RequestParam("imageId")List<Integer> imageId){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
recycleService.deleteImage(userId,imageId);
jsonObject.put("status","success");
recordService.addRecord(req, Operation.deleteImage.getName(), imageId.size(),userId);
return jsonObject;
}
}
return jsonObject;
}
ImageVO imageVO = imageService.selectAllImageByType(userId,currentPage,pageSize,imageType);
jsonObject.put("data",imageVO);
jsonObject.put("status","success");
return jsonObject;
}
// 按时间选择全部
@RequestMapping("/selectAllByTime")
public JSONObject selectAllImageByTime(String token,Integer currentPage,Integer pageSize,String imageDate) throws ParseException {
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Date imgDate = dateFormat.parse(imageDate);
System.out.println(imageDate);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
ImageVO imageVO = imageService.selectAllImageByTime(userId,currentPage,pageSize,imgDate);
jsonObject.put("data",imageVO);
jsonObject.put("status","success");
return jsonObject;
}
//根据ID删除图片
@RequestMapping("/delete")
public JSONObject deleteImage(HttpServletRequest req,String token, @RequestParam("imageId") List<Integer> imageId) {
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
* @return
*/
@Override
public ImageVO selectAllImageByType(Integer userId, Integer currentPage, Integer pageSize,String imageType) {
PageHelper.startPage(currentPage,pageSize);
List<Image> images = imageMapper.selectAllImageByType(userId,imageType);
List<String> pres = new ArrayList<>();
for (Image i:images){
pres.add(i.getImageUrL());
}
Integer integer = imageMapper.selectImageCountByType(userId,imageType);
ImageVO imageVO = new ImageVO(images,pres,integer);
return imageVO;
}
/**
* 分页按时间查询指定用户所有图片
* @param userId
* @param currentPage
* @param pageSize
* @param imageDate
* @return
*/
@Override
public ImageVO selectAllImageByTime(Integer userId, Integer currentPage, Integer pageSize, Date imageDate) {
PageHelper.startPage(currentPage,pageSize);
List<Image> images = imageMapper.selectAllImageByTime(userId,imageDate);
List<String> pres = new ArrayList<>();
for (Image i:images){
pres.add(i.getImageUrL());
}
Integer integer = imageMapper.selectImageCountByTime(userId,imageDate);
ImageVO imageVO = new ImageVO(images,pres,integer);
return imageVO;
}
/**
* 查询图片时间和类型
* @param userId
* @return
*/
@Override
public AllTimeTypeVO selectTimeType(Integer userId) {
List<Date> dates = imageMapper.selectAllImageTime(userId);
//将null时间删掉
for(int i=0;i<dates.size();i++){
int count =1;
if(resNumber!=null)
count = resNumber ;
JSONArray data = imageService.AIUploadImage(req,imgList,userId,albumId,albumName,count);
if(data.size()>0){
jsonObject.put("status","success");
jsonObject.put("data",data);
//记录操作
//
recordService.addRecord(req,Operation.AIUploadImage.getName(), imgList.size(),userId);
}
else{
for(Image i:imgList){
String imageUrL = i.getImageUrL();
fileServeUtil.deleteServe(imageUrL);
}
jsonObject.put("status","fail");
}
return jsonObject;
}
//选择时间类型
@RequestMapping("/selectTimeType")
public JSONObject selectTimeType(String token){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
AllTimeTypeVO allTimeTypeVO = imageService.selectTimeType(userId);
jsonObject.put("data",allTimeTypeVO);
jsonObject.put("status","success");
return jsonObject;
}
//选择全部
@RequestMapping("/selectAll")
public JSONObject selectAllImage(String token,Integer currentPage,Integer pageSize){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
recordService.addRecord(req, Operation.downloadImage.getName(),number,userId);
jsonObject.put("status","success");
return jsonObject;
}
//选择全部
@RequestMapping("/selectAll")
public JSONObject selectAllRecord(String token) throws ParseException {
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
List<Record> records = recordService.selectAllRecord(userId);
jsonObject.put("status","success");
jsonObject.put("data",records);
return jsonObject;
}
//删除全部
@RequestMapping("/deleteAll")
public JSONObject deleteAllRecord(String token){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
Integer userId;
if(user!=null) {
userId = user.getUserId();
}
else{
jsonObject.put("status","fail");
return jsonObject;
}
recordService.deleteAllRecord(userId);
jsonObject.put("status","success");
}
/**
* 删除相册
* @param albumIds
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteAlbum(HttpServletRequest req,List<Integer> albumIds,Integer userId) {
albumMapper.deleteAlbum(albumIds);
albumMapper.deleteAlbumImageByAlbum(albumIds);
recordService.addRecord(req,Operation.deleteAlbum.getName(), albumIds.size(),userId);
}
/**
* 查询相册所有图片
* @param albumId
* @return
* @throws ParseException
*/
@Override
public JSONObject selectAlbumImage(Integer albumId) throws ParseException {
List<Image> images = albumMapper.selectAlbumImage(albumId);
List<Date> dates = albumMapper.selectAlbumImageTime(albumId);
System.out.println(images);
List<AlbumImageVO> albumImageVOS = new ArrayList<>();
List<String> previewList = new ArrayList<>();
System.out.println(dates);
for(int i=0;i<dates.size();i++){
List<Image> img = new ArrayList<>();
for(int j=0;j<images.size();j++){
// 懒惰表达式
if(dates.get(i)==null||dates.get(i).equals(images.get(j).getImageDate())){
img.add(images.get(j));
previewList.add(images.get(j).getImageUrL());
images.remove(j);
j--;
}
}
String time = "";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
if(dates.get(i)!=null) {
String format = dateFormat.format(dates.get(i));
String week = dateUtil.getWeek(dates.get(i));
time = format+week;
}
else{
time="其它时间";
List<String> previewList = new ArrayList<>();
System.out.println(dates);
for(int i=0;i<dates.size();i++){
List<Image> img = new ArrayList<>();
for(int j=0;j<images.size();j++){
// 懒惰表达式
if(dates.get(i)==null||dates.get(i).equals(images.get(j).getImageDate())){
img.add(images.get(j));
previewList.add(images.get(j).getImageUrL());
images.remove(j);
j--;
}
}
String time = "";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
if(dates.get(i)!=null) {
String format = dateFormat.format(dates.get(i));
String week = dateUtil.getWeek(dates.get(i));
time = format+week;
}
else{
time="其它时间";
}
albumImageVOS.add(new AlbumImageVO(time,img));
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("images",albumImageVOS);
jsonObject.put("previewImageUrL",previewList);
return jsonObject;
}
}