交友项目【完善用户信息&上传用户头像】功能跳转首页

比眉伴天荒 2023-10-08 23:35 90阅读 0赞

目录

1:保存用户信息

1.1:接口地址

1.2:流程分析

1.3:代码实现

2.4: 测试

2:上传用户头像

2.1:接口地址

2.2:流程分析

2.3:代码实现

2.4:测试


1:保存用户信息

在进行完手机号码校验完毕之后,我们会进入完善用户信息页面

009be0964b624600b6eee0c68256825c.png

1.1:接口地址

启动虚拟机:首次登录—-完善资料

http://192.168.136.160:3000/project/19/interface/api/88

c722a42196924a1294e8502b1bb28400.png

982c69093ba244aa9b4ac941741543f2.png

1.2:流程分析

保存信息到用户基本资料表(tb_user_info)188c4d05f5cb4f7598b8f4c75421c494.png

用户表(tb_user) 和 用户信息表(tb_user_info) 是一对一的关系,两者采用主键关联的形式配置

575496a1e127429f97de6c12126cda6b.png

1.3:代码实现

与手机端交互的入口模块:tanhua-app-server

807497c4c2814c8c8a3cff2902d7abe4.png

Controller层:将token中存储的用户信息解构出来获取当前用户的id

  1. @PostMapping("/loginReginfo")
  2. public ResponseEntity loginReginfo(@RequestBody UserInfo userInfo , @RequestHeader("Authorization") String token){
  3. System.out.println(userInfo);
  4. boolean flag = JwtUtils.verifyToken(token);
  5. if (!flag){
  6. return ResponseEntity.status(401).body(null);
  7. }
  8. Claims claims = JwtUtils.getClaims(token);
  9. Long id = Long.valueOf(claims.get("id").toString());
  10. userInfo.setId(id);
  11. userInfoService.adduserinfo(userInfo);
  12. return ResponseEntity.ok(null);
  13. }

Service层:调用接口模块,中的接口,接口模块的实现类在Dubbo提供者模块

  1. private UserInfoApi userInfoApi;
  2. public void adduserinfo(UserInfo userInfo) {
  3. userInfoApi.adduserInfo(userInfo);
  4. }

接口模块:

175ae283bd0c46089b6b8cc7e8c93cd3.png

  1. /**
  2. * @Author 爱吃豆的土豆、
  3. * @Date 2023/4/3 9:37
  4. */
  5. public interface UserInfoApi {
  6. public void adduserInfo(UserInfo userInfo);
  7. public void update(UserInfo userInfo);
  8. }

dubbo模块提供者:

  1. /**
  2. * @Author 爱吃豆的土豆、
  3. * @Date 2023/4/3 9:03
  4. */
  5. @DubboService
  6. public class UserInfoApilmpl implements UserInfoApi {
  7. @Resource
  8. private UserInfoMapper userInfoMapper;
  9. @Override
  10. public void adduserInfo(UserInfo userInfo) {
  11. System.out.println(userInfo);
  12. int insert = userInfoMapper.insert(userInfo);
  13. System.out.println(insert);
  14. }
  15. }

2.4: 测试

点击从相册选择可以跳转打开文件即可:测试成功

97af3166ae8e4423802946b3275d2889.png

2:上传用户头像

f25e1993b727472ea78e6ca3e7a183f1.png

选择图片:

ddf43012a9f54d6fb86bbe20d2fecf1f.png

电脑图片上传位置:

65a3e8d5881a4b66827f40e6adb62a77.png

2.1:接口地址

cb41cca616434c79b006978f6909ced7.png

接口地址:http://192.168.136.160:3000/project/19/interface/api/91

上传用户头像-接口文档d1c30515af9c4a8c8886dfdb81193a07.png

2.2:流程分析

6fb1f95cd0f64f61a3071b0e1e98c040.png

2.3:代码实现

与手机端交互的入口模块:tanhua-app-server

93f606d260084081aa47a2b66b79637c.png

LoginController层:

  1. /**
  2. * @Author 爱吃豆的土豆、
  3. * @Date 2023/3/29 19:52
  4. */
  5. @RestController
  6. @RequestMapping("/user")
  7. public class LoginController {
  8. @Resource
  9. private UserService userService;
  10. @Resource
  11. private UserInfoService userInfoService;
  12. /**
  13. * 完善信息的头像信息
  14. * @param headPhoto
  15. * @param token
  16. * @return
  17. */
  18. @PostMapping("/loginReginfo/head")
  19. public ResponseEntity head( MultipartFile headPhoto, @RequestHeader("Authorization") String token){
  20. //获得用户id
  21. boolean verifyToken = JwtUtils.verifyToken(token);
  22. if (!verifyToken){
  23. return ResponseEntity.status(401).body(null);
  24. }
  25. Claims claims = JwtUtils.getClaims(token);
  26. Long id = Long.valueOf(claims.get("id").toString());
  27. userInfoService.uploadHead(headPhoto,id);
  28. return ResponseEntity.ok(null);
  29. }
  30. }

Service层:

  1. /**
  2. * @Author 爱吃豆的土豆、
  3. * @Date 2023/4/3 9:41
  4. */
  5. @Service
  6. public class UserInfoService {
  7. @Resource
  8. private OssTemplate ossTemplate;
  9. @Resource
  10. private FaceTemplate faceTemplate;
  11. @DubboReference
  12. private UserInfoApi userInfoApi;
  13. public void uploadHead(MultipartFile headphoto, Long id) {
  14. String imageUrl = ossTemplate.upload(headphoto);
  15. boolean flag = faceTemplate.FaceUtils(imageUrl);
  16. if (!flag){
  17. throw new RuntimeException("不包含人脸");
  18. }
  19. UserInfo userInfo = new UserInfo();
  20. userInfo.setId(id);
  21. userInfo.setAvatar(imageUrl);
  22. userInfoApi.update(userInfo);
  23. }
  24. }

接口模块:

46c6fee580b9402cb4c49c53ba0a9206.png

dubbo模块提供者:

  1. /**
  2. * @Author 爱吃豆的土豆、
  3. * @Date 2023/4/3 9:03
  4. */
  5. @DubboService
  6. public class UserInfoApilmpl implements UserInfoApi {
  7. @Resource
  8. private UserInfoMapper userInfoMapper;
  9. @Override
  10. public void update(UserInfo userInfo) {
  11. int i = userInfoMapper.updateById(userInfo);
  12. }
  13. }

2.4:测试

上传图片识别:

1c694eef58074af7bc3d7643699c1999.png

审核结果:

da478be997364d4baf2ce19eb812d894.png

测试成功页面:

97398fe6beab42f6b9c9901013ec263d.png

发表评论

表情:
评论列表 (有 0 条评论,90人围观)

还没有评论,来说两句吧...

相关阅读