package com.cyksj.web.controller.advertisement; import com.cyksj.common.exception.BusinessRuntimeException; import com.cyksj.dto.Result; import com.cyksj.enums.GatewayResponse; import com.cyksj.model.dto.UserWhoami; import com.cyksj.model.entity.AdvertisementUser; import com.cyksj.model.request.MiniProgramLoginPost; import com.cyksj.service.advertisement.AdvertisementUserService; import com.cyksj.web.util.StpUserUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; /** * @author chan * @date 2023/5/16 11:49 AM */ @Slf4j @RequiredArgsConstructor @RestController @RequestMapping("/applets/advertisement/user") public class AdvertisementUserController { private final AdvertisementUserService advertisementUserService; /** * 小程序静默授权 */ @PostMapping(value = "/login") @Transactional(rollbackFor = Exception.class) public Result wxlogin(@RequestBody MiniProgramLoginPost miniDataParams) throws Exception{ String methodName = "小程序静默授权"; log.info("{}[start] params:{}",methodName,miniDataParams); if (StringUtils.isBlank(miniDataParams.getCode())) { throw BusinessRuntimeException.getInstance("需要登录凭证code."); } final String code = miniDataParams.getCode(); // 用户token AdvertisementUser user = advertisementUserService.wxlogin(code,miniDataParams.getAppId()); StpUserUtil.login(user.getId()); log.info("{}[end] uuid:{}",methodName, user.getId()); return GatewayResponse.SUCCESS.newBuilder().toResult(StpUserUtil.getTokenValue()); } @GetMapping(value = "/whoami") public Result whoami(){ AdvertisementUser user = advertisementUserService.getById(StpUserUtil.getLoginIdAsLong()); UserWhoami userWhoami = advertisementUserService.whoami(user.getId()); return GatewayResponse.SUCCESS.newBuilder().toResult(userWhoami); } }