vlog/book-api/src/main/java/com/imooc/controller/UserInfoController.java
2025-04-23 16:24:59 +08:00

152 lines
5.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.imooc.controller;
import com.imooc.base.BaseInfoProperties;
import com.imooc.bo.UpdatedUserBO;
import com.imooc.config.MinIOConfig;
import com.imooc.enums.FileTypeEnum;
import com.imooc.enums.UserInfoModifyType;
import com.imooc.grace.result.GraceJSONResult;
import com.imooc.grace.result.ResponseStatusEnum;
import com.imooc.pojo.Users;
import com.imooc.service.UserService;
import com.imooc.utils.MinIOUtils;
import com.imooc.utils.SMSUtils;
import com.imooc.vo.UsersVO;
import io.prometheus.client.Info;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* @author vercen
* @version 1.0
* @date 2023/5/20 14:32
*/
@RestController
@Slf4j
@Api(tags = "UserInfoController用户信息接口模块")
@RequestMapping("userInfo")
public class UserInfoController extends BaseInfoProperties {
@Autowired
UserService userService;
// @ResponseBody
@ApiOperation(value = "根据userId返回个人信息")
@GetMapping("query")
public Object query(@RequestParam String userId){
Users user = userService.getUser(userId);
UsersVO usersVO = new UsersVO();
BeanUtils.copyProperties(user, usersVO);
// 我的关注博主总数量
String myFollowsCountsStr = redis.get(REDIS_MY_FOLLOWS_COUNTS + ":" + userId);
// 我的粉丝总数
String myFansCountsStr = redis.get(REDIS_MY_FANS_COUNTS + ":" + userId);
// 用户获赞总数,视频博主(点赞/喜欢)总和
// String likedVlogCountsStr = redis.get(REDIS_VLOG_BE_LIKED_COUNTS + ":" + userId);
String likedVlogerCountsStr = redis.get(REDIS_VLOGER_BE_LIKED_COUNTS + ":" + userId);
Integer myFollowsCounts = 0;
Integer myFansCounts = 0;
Integer likedVlogCounts = 0;
Integer likedVlogerCounts = 0;
Integer totalLikeMeCounts = 0;
if (StringUtils.isNotBlank(myFollowsCountsStr)) {
myFollowsCounts = Integer.valueOf(myFollowsCountsStr);
}
if (StringUtils.isNotBlank(myFansCountsStr)) {
myFansCounts = Integer.valueOf(myFansCountsStr);
}
// if (StringUtils.isNotBlank(likedVlogCountsStr)) {
// likedVlogCounts = Integer.valueOf(likedVlogCountsStr);
// }
if (StringUtils.isNotBlank(likedVlogerCountsStr)) {
likedVlogerCounts = Integer.valueOf(likedVlogerCountsStr);
}
totalLikeMeCounts = likedVlogCounts + likedVlogerCounts;
usersVO.setMyFollowsCounts(myFollowsCounts);
usersVO.setMyFansCounts(myFansCounts);
usersVO.setTotalLikeMeCounts(totalLikeMeCounts);
//usersVO.setMyFansCounts((Integer) myFansCounts);
return GraceJSONResult.ok(usersVO);
}
@PostMapping("modifyUserInfo")
public GraceJSONResult modifyUserInfo(@RequestBody UpdatedUserBO updatedUserBO, @RequestParam Integer type) throws Exception {
UserInfoModifyType.checkUserInfoTypeIsRight(type);
Users newUserInfo = userService.updateUserInfo(updatedUserBO, type);
return GraceJSONResult.ok(newUserInfo);
}
@Autowired
private MinIOConfig minIOConfig;
@PostMapping("modifyImage")
public GraceJSONResult modifyImage(@RequestParam String userId,
@RequestParam Integer type,
MultipartFile file) throws Exception {
if (type != FileTypeEnum.BGIMG.type && type != FileTypeEnum.FACE.type) {
return GraceJSONResult.errorCustom(ResponseStatusEnum.FILE_UPLOAD_FAILD);
}
String fileName = file.getOriginalFilename();
MinIOUtils.uploadFile(minIOConfig.getBucketName(),
fileName,
file.getInputStream());
String imgUrl = minIOConfig.getFileHost()
+ "/"
+ minIOConfig.getBucketName()
+ "/"
+ fileName;
// 修改图片地址到数据库
UpdatedUserBO updatedUserBO = new UpdatedUserBO();
updatedUserBO.setId(userId);
if (type == FileTypeEnum.BGIMG.type) {
updatedUserBO.setBgImg(imgUrl);
} else {
updatedUserBO.setFace(imgUrl);
}
Users users = userService.updateUserInfo(updatedUserBO);
return GraceJSONResult.ok(users);
}
@ApiOperation(value = "根据昵称搜索用户")
@GetMapping("searchByNickname")
public GraceJSONResult searchByNickname(@RequestParam String nickname,
@RequestParam(defaultValue = "") String id,
@RequestParam Integer page,
@RequestParam Integer pageSize){
try {
return GraceJSONResult.ok(userService.searchByNickname(nickname, page, pageSize,id));
} catch (Exception e) {
// 记录异常日志
log.error("搜索用户时发生异常nickname: {}, page: {}, pageSize: {}", nickname, page, pageSize, e);
return GraceJSONResult.errorMsg("搜索用户时发生异常,请稍后重试");
}
}
}