基于javaweb+mysql的springboot智能相册管理系统图片相册(java+springboot+vue+mysql+redis)

基于javaweb+mysql的springboot智能相册管理系统图片相册(java+springboot+vue+mysql+redis)

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7、Node.js≥10

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行

前端:WebStorm/VSCode/HBuilderX等均可

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+mysql的SpringBoot智能相册管理系统图片相册(java+springboot+vue+mysql+redis)

前端启动命令:npm run serve

后端启动类:StartApplication

登录:

user1 123456


@RestController
@RequestMapping("/user")
public class UserController {
    @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;
        }
     * 通过id删除记录
     * @param userId
     * @param Ids
     */
    @Override
    public void deleteRecordByIds(Integer userId, List<Integer> Ids) {
        recordMapper.deleteRecordByIds(userId,Ids);
    }

}

@RequestMapping("/visual")
@RestController
public class VisualDataController {
    @Resource
    VisualDataService visualDataService;
    @Resource
    TokenUtil tokenUtil;

    @RequestMapping("/selectTypeSite")
    public JSONObject selectTypeSite(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;
        }

        VisualDataVO visualDataVO = visualDataService.selectTypeSite(userId);
        jsonObject.put("status","success");
            userId = user.getUserId();
        }
        else{
            jsonObject.put("status","fail");
            return jsonObject;
        }
        recordService.deleteRecordByIds(userId,Ids);
        jsonObject.put("status","success");
        return jsonObject;
    }
}

//记录
@RestController
@RequestMapping("/recycle")
public class RecycleController {
    @Resource
    RecycleService recycleService;
    @Resource
    RecordService recordService;
    @Resource
    TokenUtil tokenUtil;

    //选择全部
    @RequestMapping("/selectAll")
    public JSONObject selectImage(String token){
        JSONObject jsonObject = new JSONObject();
        User user = tokenUtil.jwtParser(token);
        Integer userId;

     * @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();
            String filePath = image.getCompressUrL();
            List<AIResultVO> results = null;
            List<AIResultVO> res = null;
            results = fileServeUtil.imageGet(fileServeUtil.ServPathToAP(filePath));
            //是返回结果最少
            res = results.subList(0, Math.min(count, results.size() ));
            JSONObject js = new JSONObject();
            js.put("img","图片"+(i+1));
            for(int j=0;j<res.size();j++){
                String s = res.get(j).getValue()+res.get(j).getConfidence()+"%";
                js.put("res"+(j+1),s);
            }
            data.add(js);
            System.out.println(res);
            imageMapper.addImageTypes(image.getImageId(),res);
            i++;
        }
        //添加中间用户图片表
        userMapper.addUserImage(userId,imageIds);
        //添加相册图片中间表
            if (albumId == 0) {
                Album album = new Album();
                album.setAlbumName(albumName);
     * @param
     * @param number
     * @param userId
     * @return
     */
    boolean addRecord( HttpServletRequest req,String operation, Integer number, Integer userId);

    /**
     * 查询所有记录
     * @param userId
     * @return
     */
    List<Record> selectAllRecord(Integer userId) throws ParseException;

    /**
     * 删除所有记录
     * @param userId
     */
    void deleteAllRecord(Integer userId);

    /**
     * 删除部分记录
     * @param userId
     * @param Ids
     */
    void deleteRecordByIds(Integer userId,List<Integer> Ids);

}

@Service
public interface AlbumService {

    void addAlbum(HttpServletRequest req,String albumName, Integer userId);

    void setAlbumCover(Integer albumId,Integer imageId);

    List<PartAlbumVO> selectAllAlbum(Integer userId);

    void addImageToAlbum(HttpServletRequest req,Integer albumId,List<Integer> imageId,Integer userId);

    private RecordService recordService;
    @Resource
    private TokenUtil tokenUtil;

    private  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    //上传照片
    @RequestMapping("/upload")
    public JSONObject upload(HttpServletRequest req, String albumName, Integer albumId, String imgSite, String imgType,String imgDate, String token, @RequestParam("file")MultipartFile[] multipartFiles) 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("")){
            System.out.println(1);
            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();
            long fileSize = m.getSize();
            String imageUrL = fileServeUtil.uploadServe("img", userName, m);

            String compressUrL = fileServeUtil.CompressImage(fileServeUtil.ServPathToAP(imageUrL), userName, (float) m.getSize());

            imgList.add(new Image(null,fileName,fileSize,imgSite,imageUrL,compressUrL,imageDate));
        }

@Service
public class ImageServiceImpl implements ImageService {

    @Resource
    private ImageMapper imageMapper;
    @Resource
    private UserMapper userMapper;
    @Resource
    private AlbumMapper albumMapper;
    @Resource
    private RecycleMapper recycleMapper;
    @Resource
    private FileServeUtil fileServeUtil;
    @Resource
    private RecordService recordService;
//        当前系统时间
    private SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 普通上传
     * @param imageList
     * @param userId
     * @param albumId
     * @param albumName
     * @param imgType
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)//事务控制
    public boolean uploadImage(HttpServletRequest req,List<Image> imageList, Integer userId, Integer albumId, String albumName, String imgType) throws Exception {
        //添加图片
        imageMapper.addImages(imageList);
        //返回图片id集合
        List<Integer> imageIds = new ArrayList<>();
        for (Image i : imageList) {
            imageIds.add(i.getImageId());
        }
        //添加中间用户图片表
        userMapper.addUserImage(userId,imageIds);
        //添加图片类型中间表
            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;
    }

}

@Service
public class AlbumServiceImpl implements AlbumService {
    @Resource
    AlbumMapper albumMapper;
    @Resource
    RecordService recordService;
    @Resource
    DateUtil dateUtil;
    private String defaultAlbum = "/static/album/albumImg.png";

    /**
     * 添加相册
     * @param albumName
    @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;
    }
    //从相册中删除图像
    @RequestMapping("/removeImageFromAlbum")
    public JSONObject removeImageFromAlbum(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.removeImageToAlbum(req,albumId,imageId,user.getUserId());
        jsonObject.put("status","success");
                js.put("res"+(j+1),s);
            }
            data.add(js);
            System.out.println(res);
            imageMapper.addImageTypes(image.getImageId(),res);
            i++;
        }
        //添加中间用户图片表
        userMapper.addUserImage(userId,imageIds);
        //添加相册图片中间表
            if (albumId == 0) {
                Album album = new Album();
                album.setAlbumName(albumName);
                album.setAlbumImg(imageList.get(0).getCompressUrL());
                album.setUserId(userId);
                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 data;
    }

    /**
     * 查询指定用户所有图片数量
     * @param userId
     * @return
     */
    @Override
    public Integer selectImageTotal(Integer userId) {
        Integer integer = imageMapper.selectImageTotalCount(userId);
        return integer;
    }

    /**
     * 分页查询指定用户所有图片
     * @param userId
     * @param currentPage
     * @param pageSize
     * @return
     */
    @Override
    public ImageVO selectAllImage(Integer userId, Integer currentPage, Integer pageSize) {
        PageHelper.startPage(currentPage,pageSize);
        List<Image> images = imageMapper.selectAllImage(userId);
        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
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteImage(Integer userId,List<Integer> imageId) {
        imageMapper.deleteUserImage(userId,imageId);
        recycleMapper.addImageToRecycle(userId,imageId);
        albumMapper.deleteAlbumImageByImgId(imageId);
    }

}

           }
           else{
               time="其它时间";
           }
            albumImageVOS.add(new AlbumImageVO(time,img));
        }

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("images",albumImageVOS);
        jsonObject.put("previewImageUrL",previewList);
        return jsonObject;
    }

}

@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");
            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");

@RestController
@RequestMapping("/user")
public class UserController {
    @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")
     */
    @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);
    }

    /**
     */
    @Override
    public ImageVO selectAllImage(Integer userId, Integer currentPage, Integer pageSize) {
        PageHelper.startPage(currentPage,pageSize);
        List<Image> images = imageMapper.selectAllImage(userId);
        List<String> pres = new ArrayList<>();
        for (Image i:images){
            pres.add(i.getImageUrL());
        }
        Integer integer = imageMapper.selectImageTotalCount(userId);
        ImageVO imageVO = new ImageVO(images,pres,integer);
        return imageVO;
    }

    /**
     * 分页按类型查询指定用户所有图片
     * @param userId
     * @param currentPage
     * @param pageSize
     * @param imageType
     * @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
        VisualDataVO visualDataVO = visualDataService.selectTypeSite(userId);
        jsonObject.put("status","success");
        jsonObject.put("data", visualDataVO);
        return jsonObject;
    }

    @RequestMapping("/selectImageInfo")
    public JSONObject selectUserInfo(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.put("status","success");
        JSONObject res = visualDataService.selectUserInfo(userId);
        jsonObject.put("data", res);
        return jsonObject;
    }

}

@RestController
public class SendEmailController {
    @Resource
    RedisUtil redisUtil;
    @Value("${spring.mail.code.time}")
    private int validTime;
    @Resource
    private SendEmailUtil se;

    @RequestMapping("/code")
    public String sendCode(@RequestParam("email") String email) {
        System.out.println(email);
        int codeLen = 6;
        //int num = (int) ((Math.random() * 9 + 1) * Math.pow(10, codeLen - 1));

    //记录下载
    @RequestMapping("/recordDownload")
    public JSONObject recordDownload(HttpServletRequest req, String token,Integer number){
        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.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;

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值