基于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
//选择全部
@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");
return jsonObject;
}
//根据ID删除
@RequestMapping("/deleteById")
public JSONObject deleteRecordById(String token,@RequestParam("Ids")List<Integer> Ids){
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.deleteRecordByIds(userId,Ids);
jsonObject.put("status","success");
return jsonObject;
}
@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 {
public boolean addRecord(HttpServletRequest req,String operation, Integer number, Integer userId) {
Date date = new Date();
Record record = new Record();
record.setDate(date);
record.setOperation(operation);
record.setNumber(number);
record.setIpv4(ipUtil.getIpAddress(req));
record.setUserId(userId);
recordMapper.addRecord(record);
if(record.getId()!=null){
return true;
}
return false;
}
/**
* 查询所有记录
* @param userId
* @return
* @throws ParseException
*/
@Override
public List<Record> selectAllRecord(Integer userId) throws ParseException {
List<Record> records = recordMapper.selectAllRecord(userId);
for(Record r:records){
String week = dateUtil.getWeek(r.getDate());
r.setWeek(week);
}
return records;
}
/**
* 删除所有记录
* @param userId
*/
@Override
public void deleteAllRecord(Integer userId) {
recordMapper.deleteAllRecord(userId);
}
/**
@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");
return jsonObject;
}
//新建相册
@RequestMapping("/addAlbum")
public JSONObject addAlbum(HttpServletRequest req,String token,String albumName){
JSONObject jsonObject = new JSONObject();
User user = tokenUtil.jwtParser(token);
if(user==null){
jsonObject.put("status","fail");
return jsonObject;
}
albumService.addAlbum(req,albumName,user.getUserId());
jsonObject.put("status","success");
return jsonObject;
}
//根据ID删除相册
@RequestMapping("/deleteAlbumByIds")
ImageVO selectAllImage(Integer userId, Integer currentPage, Integer pageSize);
ImageVO selectAllImageByType(Integer userId,Integer currentPage,Integer pageSize,String imageType);
ImageVO selectAllImageByTime(Integer userId, Integer currentPage, Integer pageSize, Date imageDate);
AllTimeTypeVO selectTimeType(Integer userId);
void deleteImage(Integer userId,List<Integer> imageId);
}
@Component
public class IpUtil {
private String LOCAL_IP = "192.168.0.1";
public String getIpAddress(HttpServletRequest request) {
if (request == null) {
return "unknown";
}
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Forwarded-For");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return "0:0:0:0:0:0:0:1".equals(ip) ? LOCAL_IP : ip;
}
}
}
/**
* 删除所有记录
* @param userId
*/
@Override
public void deleteAllRecord(Integer userId) {
recordMapper.deleteAllRecord(userId);
}
/**
* 通过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;
@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;
}
}
@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");
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;
}
imgList.add(new Image(null,fileName,fileSize,imgSite,imageUrL,compressUrL,imageDate));
}
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();
@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;
}
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;
}
@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;
}
//从相册中删除图像
@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());
@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
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));
}
System.out.println(imgList);
boolean status = imageService.uploadImage(req,imgList, userId, albumId, albumName, imgType);
if(status){
jsonObject.put("status","success");
//记录操作
//
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;
}
public class RecordServiceImpl implements RecordService {
@Resource
RecordMapper recordMapper;
@Resource
IpUtil ipUtil;
@Resource
DateUtil dateUtil;
/**
* 添加记录
* @param operation
* @param
* @param number
* @param userId
* @return
*/
@Override
public boolean addRecord(HttpServletRequest req,String operation, Integer number, Integer userId) {
Date date = new Date();
Record record = new Record();
record.setDate(date);
record.setOperation(operation);
record.setNumber(number);
record.setIpv4(ipUtil.getIpAddress(req));
record.setUserId(userId);
recordMapper.addRecord(record);
if(record.getId()!=null){
return true;
}
return false;
}
/**
* 查询所有记录
* @param userId
* @return
* @throws ParseException
*/
@Override
public List<Record> selectAllRecord(Integer userId) throws ParseException {
List<Record> records = recordMapper.selectAllRecord(userId);
for(Record r:records){
String week = dateUtil.getWeek(r.getDate());
r.setWeek(week);
}
return records;
}
/**
* 删除所有记录
* @param userId
return jsonObject;
}
else{
jsonObject.put("status", "fail");
}
return jsonObject;
}
//更新用户
@RequestMapping("/updateUser")
public JSONObject updateUser(String token,String sex,String email,String phone,String city,String birthday) throws ParseException {
JSONObject jsonObject= new JSONObject();
User userToken = tokenUtil.jwtParser(token);
if(userToken!=null){
userToken.setSex(sex);
userToken.setEmail(email);
userToken.setPhone(phone);
userToken.setCity(city);
}
else{
jsonObject.put("status", "fail");
return jsonObject;
}
Date b;
if(birthday.equals("null")||birthday.equals("")){
System.out.println(1);
b=null;
}
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);
@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;
}
System.out.println(email);
String redisCode = redisUtil.get(email);
if(!codeNumber.equals(redisCode)){
else{
jsonObject.put("status","fail");
return jsonObject;
}
recordService.deleteAllRecord(userId);
jsonObject.put("status","success");
return jsonObject;
}
//根据ID删除
@RequestMapping("/deleteById")
public JSONObject deleteRecordById(String token,@RequestParam("Ids")List<Integer> Ids){
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.deleteRecordByIds(userId,Ids);
jsonObject.put("status","success");
return jsonObject;
}
}
//记录
@RestController
@RequestMapping("/recycle")
public class RecycleController {
@Resource
RecycleService recycleService;
@Resource
RecordService recordService;
@Resource
TokenUtil tokenUtil;