AdvertisementUserController.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package com.cyksj.web.controller.advertisement;
  2. import com.cyksj.common.exception.BusinessRuntimeException;
  3. import com.cyksj.dto.Result;
  4. import com.cyksj.enums.GatewayResponse;
  5. import com.cyksj.model.dto.UserWhoami;
  6. import com.cyksj.model.entity.AdvertisementUser;
  7. import com.cyksj.model.request.MiniProgramLoginPost;
  8. import com.cyksj.service.advertisement.AdvertisementUserService;
  9. import com.cyksj.web.util.StpUserUtil;
  10. import lombok.RequiredArgsConstructor;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import org.springframework.web.bind.annotation.*;
  15. /**
  16. * @author chan
  17. * @date 2023/5/16 11:49 AM
  18. */
  19. @Slf4j
  20. @RequiredArgsConstructor
  21. @RestController
  22. @RequestMapping("/applets/advertisement/user")
  23. public class AdvertisementUserController {
  24. private final AdvertisementUserService advertisementUserService;
  25. /**
  26. * 小程序静默授权
  27. */
  28. @PostMapping(value = "/login")
  29. @Transactional(rollbackFor = Exception.class)
  30. public Result<String> wxlogin(@RequestBody MiniProgramLoginPost miniDataParams) throws Exception{
  31. String methodName = "小程序静默授权";
  32. log.info("{}[start] params:{}",methodName,miniDataParams);
  33. if (StringUtils.isBlank(miniDataParams.getCode())) {
  34. throw BusinessRuntimeException.getInstance("需要登录凭证code.");
  35. }
  36. final String code = miniDataParams.getCode();
  37. // 用户token
  38. AdvertisementUser user = advertisementUserService.wxlogin(code,miniDataParams.getAppId());
  39. StpUserUtil.login(user.getId());
  40. log.info("{}[end] uuid:{}",methodName, user.getId());
  41. return GatewayResponse.SUCCESS.newBuilder().toResult(StpUserUtil.getTokenValue());
  42. }
  43. @GetMapping(value = "/whoami")
  44. public Result<UserWhoami> whoami(){
  45. AdvertisementUser user = advertisementUserService.getById(StpUserUtil.getLoginIdAsLong());
  46. UserWhoami userWhoami = advertisementUserService.whoami(user.getId());
  47. return GatewayResponse.SUCCESS.newBuilder().toResult(userWhoami);
  48. }
  49. }