diff --git a/src/main/java/com/steadon/taotee/controller/UserInfoController.java b/src/main/java/com/steadon/taotee/controller/UserInfoController.java index b0fbdfe00792d179f1fedb8dd35ac988beccc0a8..c841951539f986de880db981bcf5b79b9a0d68b1 100644 --- a/src/main/java/com/steadon/taotee/controller/UserInfoController.java +++ b/src/main/java/com/steadon/taotee/controller/UserInfoController.java @@ -4,9 +4,11 @@ import com.steadon.taotee.pojo.TaoTeeResult; import com.steadon.taotee.pojo.domain.dto.UserBaseDTO; import com.steadon.taotee.pojo.request.BaseInfoReq; import com.steadon.taotee.pojo.response.TokenRep; +import com.steadon.taotee.pojo.response.UrlRep; import com.steadon.taotee.service.UserInfoService; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; @RestController @AllArgsConstructor @@ -20,6 +22,11 @@ public class UserInfoController { return userInfoService.wxLogin(code); } + @PostMapping("/avatar/upload") + public TaoTeeResult<UrlRep> uploadAvatar(MultipartFile file) { + return userInfoService.uploadAvatar(file); + } + @GetMapping("/user/base") public TaoTeeResult<UserBaseDTO> showBaseInfo() { return userInfoService.showBaseInfo(); diff --git a/src/main/java/com/steadon/taotee/pojo/domain/ImageMap.java b/src/main/java/com/steadon/taotee/pojo/domain/ImageMap.java new file mode 100644 index 0000000000000000000000000000000000000000..7eec0727fdd80ca065ccdbc767c0231634450e0c --- /dev/null +++ b/src/main/java/com/steadon/taotee/pojo/domain/ImageMap.java @@ -0,0 +1,27 @@ +package com.steadon.taotee.pojo.domain; + +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.io.Serializable; + +@Data +@Document(collection = "image_map") +public class ImageMap implements Serializable { + + @Id + private String id; + + private String url; + + /** + * 1-post 2-avatar + */ + private Integer usedFor; + + public ImageMap(String url, Integer usedFor) { + this.url = url; + this.usedFor = usedFor; + } +} diff --git a/src/main/java/com/steadon/taotee/pojo/domain/PhotoMap.java b/src/main/java/com/steadon/taotee/pojo/domain/PhotoMap.java deleted file mode 100644 index 154bb0a75bb827edc7462865c1566b4d0c5b0520..0000000000000000000000000000000000000000 --- a/src/main/java/com/steadon/taotee/pojo/domain/PhotoMap.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.steadon.taotee.pojo.domain; - -import lombok.Data; -import org.springframework.data.annotation.Id; -import org.springframework.data.mongodb.core.mapping.Document; - -@Data -@Document(collection = "photo_map") -public class PhotoMap { - - @Id - private String id; - - private String url; -} diff --git a/src/main/java/com/steadon/taotee/repository/ImageMapRepository.java b/src/main/java/com/steadon/taotee/repository/ImageMapRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..e7ec3ff4109930d91f7cf9fb2ad7db60461e6462 --- /dev/null +++ b/src/main/java/com/steadon/taotee/repository/ImageMapRepository.java @@ -0,0 +1,7 @@ +package com.steadon.taotee.repository; + +import com.steadon.taotee.pojo.domain.ImageMap; +import org.springframework.data.mongodb.repository.MongoRepository; + +public interface ImageMapRepository extends MongoRepository<ImageMap, String> { +} diff --git a/src/main/java/com/steadon/taotee/repository/PhotoMapRepository.java b/src/main/java/com/steadon/taotee/repository/PhotoMapRepository.java deleted file mode 100644 index a554ebfd50aa8ad5c7b882974780e4501a5d0fa9..0000000000000000000000000000000000000000 --- a/src/main/java/com/steadon/taotee/repository/PhotoMapRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.steadon.taotee.repository; - -import com.steadon.taotee.pojo.domain.PhotoMap; -import org.springframework.data.mongodb.repository.MongoRepository; - -public interface PhotoMapRepository extends MongoRepository<PhotoMap, String> { -} diff --git a/src/main/java/com/steadon/taotee/service/UserInfoService.java b/src/main/java/com/steadon/taotee/service/UserInfoService.java index a2f694072ee2c8fac191c43c5d9606daf2b93c68..1c99110b15ffce840221276fd91ec566e686a0b3 100644 --- a/src/main/java/com/steadon/taotee/service/UserInfoService.java +++ b/src/main/java/com/steadon/taotee/service/UserInfoService.java @@ -4,10 +4,14 @@ import com.steadon.taotee.pojo.TaoTeeResult; import com.steadon.taotee.pojo.domain.dto.UserBaseDTO; import com.steadon.taotee.pojo.request.BaseInfoReq; import com.steadon.taotee.pojo.response.TokenRep; +import com.steadon.taotee.pojo.response.UrlRep; +import org.springframework.web.multipart.MultipartFile; public interface UserInfoService { TaoTeeResult<TokenRep> wxLogin(String code); + TaoTeeResult<UrlRep> uploadAvatar(MultipartFile file); + TaoTeeResult<UserBaseDTO> showBaseInfo(); TaoTeeResult<UserBaseDTO> editBaseInfo(BaseInfoReq req); diff --git a/src/main/java/com/steadon/taotee/service/impl/PostInfoServiceImpl.java b/src/main/java/com/steadon/taotee/service/impl/PostInfoServiceImpl.java index c58ec42320b7c69739a4682fb5a0a97708ecce67..3c260858d90d2f4b1aa9e351970af72d0fd00bc1 100644 --- a/src/main/java/com/steadon/taotee/service/impl/PostInfoServiceImpl.java +++ b/src/main/java/com/steadon/taotee/service/impl/PostInfoServiceImpl.java @@ -2,13 +2,13 @@ package com.steadon.taotee.service.impl; import com.steadon.taotee.handler.TokenHandler; import com.steadon.taotee.pojo.TaoTeeResult; -import com.steadon.taotee.pojo.domain.PhotoMap; +import com.steadon.taotee.pojo.domain.ImageMap; import com.steadon.taotee.pojo.domain.PostInfo; import com.steadon.taotee.pojo.domain.dto.PostInfoDTO; import com.steadon.taotee.pojo.pageData.PageData; import com.steadon.taotee.pojo.request.PostInfoReq; import com.steadon.taotee.pojo.response.UrlRep; -import com.steadon.taotee.repository.PhotoMapRepository; +import com.steadon.taotee.repository.ImageMapRepository; import com.steadon.taotee.repository.PostInfoRepository; import com.steadon.taotee.service.PostInfoService; import com.steadon.taotee.utils.QiniuUtils; @@ -31,7 +31,7 @@ public class PostInfoServiceImpl implements PostInfoService { private QiniuUtils qiniuUtils; - private PhotoMapRepository photoMapRepository; + private ImageMapRepository imageMapRepository; private PostInfoRepository postInfoRepository; @Override @@ -39,9 +39,8 @@ public class PostInfoServiceImpl implements PostInfoService { String fileName = StringUtils.generateRandomString(8); String url = qiniuUtils.upload("photo", fileName, file); - PhotoMap photoMap = new PhotoMap(); - photoMap.setUrl(url); - photoMapRepository.save(photoMap); + ImageMap imageMap = new ImageMap(url, 1); + imageMapRepository.save(imageMap); return TaoTeeResult.success(new UrlRep(url)); } diff --git a/src/main/java/com/steadon/taotee/service/impl/UserInfoServiceImpl.java b/src/main/java/com/steadon/taotee/service/impl/UserInfoServiceImpl.java index 2f3e9bba86b520473fde98566f619ad2350a3819..4c64f6b8f0e3404b11198eb90719c65275461b3f 100644 --- a/src/main/java/com/steadon/taotee/service/impl/UserInfoServiceImpl.java +++ b/src/main/java/com/steadon/taotee/service/impl/UserInfoServiceImpl.java @@ -2,27 +2,35 @@ package com.steadon.taotee.service.impl; import com.steadon.taotee.handler.TokenHandler; import com.steadon.taotee.pojo.TaoTeeResult; +import com.steadon.taotee.pojo.domain.ImageMap; import com.steadon.taotee.pojo.domain.UserInfo; import com.steadon.taotee.pojo.domain.dto.UserBaseDTO; import com.steadon.taotee.pojo.model.TokenModel; import com.steadon.taotee.pojo.request.BaseInfoReq; import com.steadon.taotee.pojo.response.TokenRep; +import com.steadon.taotee.pojo.response.UrlRep; +import com.steadon.taotee.repository.ImageMapRepository; import com.steadon.taotee.repository.UserInfoRepository; import com.steadon.taotee.service.UserInfoService; +import com.steadon.taotee.utils.QiniuUtils; +import com.steadon.taotee.utils.StringUtils; import com.steadon.taotee.utils.WechatUtils; import com.steadon.utils.TokenUtils; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; @Service @AllArgsConstructor public class UserInfoServiceImpl implements UserInfoService { + private QiniuUtils qiniuUtils; private TokenUtils tokenUtils; private WechatUtils wechatUtils; + private ImageMapRepository imageMapRepository; private UserInfoRepository userInfoRepository; private MongoTemplate mongoTemplate; @@ -52,11 +60,23 @@ public class UserInfoServiceImpl implements UserInfoService { return TaoTeeResult.success(rep); } + @Override + public TaoTeeResult<UrlRep> uploadAvatar(MultipartFile file) { + String fileName = StringUtils.generateRandomString(8); + String url = qiniuUtils.upload("avatar", fileName, file); + + ImageMap imageMap = new ImageMap(url, 2); + imageMapRepository.save(imageMap); + return TaoTeeResult.success(new UrlRep(url)); + } + @Override public TaoTeeResult<UserBaseDTO> showBaseInfo() { String openid = TokenHandler.getModel().getOpenid(); UserInfo userInfo = userInfoRepository.findUserInfoByOpenid(openid); - + if (userInfo.getAvatar() == null) { + userInfo.setAvatar("https://image.taotee.sipc115.com/avatar/default"); + } UserBaseDTO userBaseDTO = new UserBaseDTO(); BeanUtils.copyProperties(userInfo, userBaseDTO); return TaoTeeResult.success(userBaseDTO); @@ -67,9 +87,18 @@ public class UserInfoServiceImpl implements UserInfoService { String openid = TokenHandler.getModel().getOpenid(); UserInfo userInfo = userInfoRepository.findUserInfoByOpenid(openid); - userInfo.setAvatar(req.getAvatar()); - userInfo.setNickname(req.getNickname()); - userInfo.setSignature(req.getSignature()); + String avatar = req.getAvatar(); + String nickname = req.getNickname(); + String signature = req.getSignature(); + if (avatar != null && !avatar.isEmpty()) { + userInfo.setAvatar(avatar); + } + if (nickname != null && !nickname.isEmpty()) { + userInfo.setNickname(nickname); + } + if (signature != null && !signature.isEmpty()) { + userInfo.setSignature(signature); + } UserInfo saved = mongoTemplate.save(userInfo); UserBaseDTO userBaseDTO = new UserBaseDTO();