diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/FileConstant.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/FileConstant.java new file mode 100644 index 0000000..ce42280 --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/FileConstant.java @@ -0,0 +1,33 @@ +package com.fanxb.bookmark.business.user.constant; + +import com.fanxb.bookmark.common.constant.Constant; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.File; +import java.nio.file.Paths; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/9/9 14:30 + */ +@Component +public class FileConstant { + + /** + * 用户头像目录 + */ + public static String iconPath = Paths.get("static", "public", "icon").toString(); + + + @PostConstruct + private void init() { + File file = Paths.get(Constant.fileSavePath, iconPath).toFile(); + if (!file.exists()) { + file.mkdirs(); + } + } +} diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/UserController.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/UserController.java index c35282d..dc64eac 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/UserController.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/UserController.java @@ -71,7 +71,7 @@ public class UserController { * @param file 头像文件 */ @PostMapping("/icon") - public Result pushIcon(@RequestParam("file") MultipartFile file) { + public Result pushIcon(@RequestParam("file") MultipartFile file) throws Exception { return Result.success(userService.updateIcon(file)); } diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java index 69a6422..bf0eba1 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java @@ -2,6 +2,7 @@ package com.fanxb.bookmark.business.user.dao; import com.fanxb.bookmark.common.entity.User; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; import org.springframework.stereotype.Component; /** @@ -48,19 +49,30 @@ public interface UserDao { * Description: 更新一个参数 * * @param password 新密码 - * @param email 邮箱 + * @param email 邮箱 * @author fanxb * @date 2019/7/9 20:03 */ - void resetPassword(@Param("password") String password,@Param("email") String email); + void resetPassword(@Param("password") String password, @Param("email") String email); /** * Description: 根据用户id查询用户信息 * - * @author fanxb - * @date 2019/7/30 16:08 * @param userId userId * @return com.fanxb.bookmark.common.entity.User + * @author fanxb + * @date 2019/7/30 16:08 */ User selectByUserId(int userId); + + /** + * Description: 更新用户icon + * + * @param userId userId + * @param icon icon + * @author fanxb + * @date 2019/9/9 13:57 + */ + @Update("update user set icon=#{icon} where userId=#{userId}") + void updateUserIcon(@Param("userId") int userId, @Param("icon") String icon); } diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/UserService.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/UserService.java index 24359f5..46222e7 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/UserService.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/UserService.java @@ -1,10 +1,12 @@ package com.fanxb.bookmark.business.user.service; +import com.fanxb.bookmark.business.user.constant.FileConstant; import com.fanxb.bookmark.business.user.dao.UserDao; import com.fanxb.bookmark.business.user.entity.LoginBody; import com.fanxb.bookmark.business.user.entity.LoginRes; import com.fanxb.bookmark.business.user.entity.RegisterBody; import com.fanxb.bookmark.common.constant.Constant; +import com.fanxb.bookmark.common.constant.NumberConstant; import com.fanxb.bookmark.common.entity.MailInfo; import com.fanxb.bookmark.common.entity.User; import com.fanxb.bookmark.common.exception.FormDataException; @@ -13,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; @@ -36,6 +39,11 @@ public class UserService { */ private static final long LONG_EXPIRE_TIME = 30L * TimeUtil.DAY_MS; + /** + * 头像文件大小限制 单位:KB + */ + private static final int ICON_SIZE = 200; + @Autowired private UserDao userDao; @@ -159,10 +167,19 @@ public class UserService { /** * 修改用户头像 + * * @param file file - * @return 修改后的路径 + * @return 访问路径 */ - public String updateIcon(MultipartFile file){ - return "asdf"; + public String updateIcon(MultipartFile file) throws Exception { + if (file.getSize() / NumberConstant.K_SIZE > ICON_SIZE) { + throw new FormDataException("文件大小超过限制"); + } + int userId = UserContextHolder.get().getUserId(); + String fileName = file.getOriginalFilename(); + String path = Paths.get(FileConstant.iconPath, userId + fileName.substring(fileName.lastIndexOf("."))).toString(); + file.transferTo(Paths.get(Constant.fileSavePath, path)); + userDao.updateUserIcon(userId, path); + return path; } } diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java index e99e44f..b96abd3 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java @@ -54,4 +54,15 @@ public class Constant { public void setJwtSecret(String jwtSecret) { Constant.jwtSecret = jwtSecret; } + + /** + * 文件存储基路径 + */ + public static String fileSavePath = "./"; + + @Value("${fileSavePath}") + public void setFileSavePath(String path) { + fileSavePath = path; + } + } diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/NumberConstant.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/NumberConstant.java new file mode 100644 index 0000000..644ff15 --- /dev/null +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/NumberConstant.java @@ -0,0 +1,16 @@ +package com.fanxb.bookmark.common.constant; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/9/9 11:41 + */ +public class NumberConstant { + + /** + * 2^10 + */ + public static final int K_SIZE = 1024; +}