package cn.lili.controller.passport.connect; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; import cn.lili.common.security.token.Token; import cn.lili.common.utils.UuidUtils; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.connect.entity.dto.AuthCallback; import cn.lili.modules.connect.entity.dto.ConnectAuthUser; import cn.lili.modules.connect.request.AuthRequest; import cn.lili.modules.connect.service.ConnectService; import cn.lili.modules.connect.util.ConnectUtil; import cn.lili.modules.member.service.MemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 买家端,web联合登录 * * @author Chopper */ @Slf4j @RestController @Api(tags = "买家端,web联合登录") @RequestMapping("/buyer/passport/connect/connect") public class ConnectBuyerWebController { @Autowired private ConnectService connectService; @Autowired private MemberService memberService; @Autowired private ConnectUtil connectUtil; @GetMapping("/login/web/{type}") @ApiOperation(value = "WEB信任登录授权,包含PC、WAP") @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "登录方式:QQ,微信,微信_PC", allowableValues = "QQ,WECHAT,WECHAT_PC", paramType = "path") }) public ResultMessage webAuthorize(@PathVariable String type, HttpServletResponse response) throws IOException { AuthRequest authRequest = connectUtil.getAuthRequest(type); String authorizeUrl = authRequest.authorize(UuidUtils.getUUID()); response.sendRedirect(authorizeUrl); return ResultUtil.data(authorizeUrl); } @ApiOperation(value = "信任登录统一回调地址", hidden = true) @GetMapping("/callback/{type}") public void callBack(@PathVariable String type, AuthCallback callback, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException { connectUtil.callback(type, callback, httpServletRequest, httpServletResponse); } @ApiOperation(value = "信任登录响应结果获取") @GetMapping("/result") public ResultMessage callBackResult(String state) { if (state == null) { throw new ServiceException(ResultCode.USER_CONNECT_LOGIN_ERROR); } return connectUtil.getResult(state); } @ApiOperation(value = "APP-unionID登录") @PostMapping("/app/login") public ResultMessage unionLogin(@RequestBody ConnectAuthUser authUser, @RequestHeader("uuid") String uuid) { try { return ResultUtil.data(connectService.unionLoginCallback(authUser, uuid)); } catch (Exception e) { e.printStackTrace(); log.error("unionID登录错误", e); } return null; } }