UserInfoController.java 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.izouma.walkchina.web;
  2. import com.izouma.walkchina.dto.Result;
  3. import com.izouma.walkchina.domain.UserInfo;
  4. import com.izouma.walkchina.exception.ServiceException;
  5. import com.izouma.walkchina.repo.UserInfoRepository;
  6. import com.izouma.walkchina.service.UserInfoService;
  7. import com.izouma.walkchina.utils.SecurityUtils;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.data.domain.Example;
  10. import org.springframework.data.domain.PageRequest;
  11. import org.springframework.security.core.Authentication;
  12. import org.springframework.security.core.context.SecurityContextHolder;
  13. import org.springframework.web.bind.annotation.*;
  14. @RestController
  15. @RequestMapping("/user")
  16. public class UserInfoController {
  17. @Autowired
  18. private UserInfoRepository userInfoRepository;
  19. @Autowired
  20. private UserInfoService userInfoService;
  21. @GetMapping("/my")
  22. public Result my() {
  23. Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
  24. UserInfo userInfo = (UserInfo) authentication.getPrincipal();
  25. userInfo = userInfoRepository.findById(userInfo.getId()).orElseThrow(new ServiceException("无记录"));
  26. return Result.ok(userInfo);
  27. }
  28. @GetMapping("/get")
  29. public Result get(UserInfo probe) {
  30. UserInfo userInfo = userInfoRepository.findOne(Example.of(probe)).orElseThrow(new ServiceException("无结果"));
  31. return Result.ok(userInfo);
  32. }
  33. @GetMapping("/all")
  34. public Result all(UserInfo probe) {
  35. return Result.ok(userInfoRepository.findAll(Example.of(probe)));
  36. }
  37. @GetMapping("/page")
  38. public Result page(@RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "20") int size, UserInfo probe) {
  39. return Result.ok(userInfoRepository.findAll(Example.of(probe), PageRequest.of(page, size)));
  40. }
  41. @PostMapping("/getMiniAppUserInfo")
  42. public Result getMiniAppUserInfo(String sessionKey, String rawData, String signature,
  43. String encryptedData, String iv) {
  44. UserInfo userInfo = userInfoService.getMiniAppUserInfo(sessionKey, rawData, signature, encryptedData, iv);
  45. if (userInfo != null) {
  46. return Result.ok(userInfo);
  47. }
  48. return Result.error("获取用户信息失败,请稍后再试");
  49. }
  50. @GetMapping("/saveFriend")
  51. public Result saveFriend(@RequestParam("userId") Long userId) {
  52. try {
  53. Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
  54. UserInfo userInfo = (UserInfo) authentication.getPrincipal();
  55. userInfoService.saveFriend(userId, userInfo.getId());
  56. return Result.ok();
  57. } catch (Exception ignored) {
  58. }
  59. return Result.error();
  60. }
  61. @PostMapping("/updateLocation")
  62. public Result updateLocation(@RequestParam("latitude") Double latitude, @RequestParam("longitude") Double longitude) {
  63. try {
  64. Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
  65. UserInfo userInfo = (UserInfo) authentication.getPrincipal();
  66. userInfoService.updateLocation(userInfo.getId(), latitude, longitude);
  67. return Result.ok();
  68. } catch (Exception ignored) {
  69. }
  70. return Result.error();
  71. }
  72. @PostMapping("/saveUser")
  73. public Result saveUser(UserInfo userInfo) {
  74. userInfoRepository.save(userInfo);
  75. return Result.ok();
  76. }
  77. @GetMapping("/walkStats")
  78. public Result walkStats(Long userId) {
  79. if (userId == null) {
  80. UserInfo userInfo = SecurityUtils.getAuthenticatedUser();
  81. userId = userInfo.getId();
  82. }
  83. return Result.ok(userInfoService.getUserWalkStats(userId));
  84. }
  85. }