105 lines
3.4 KiB
Java
105 lines
3.4 KiB
Java
package com.gxwebsoft.auto.controller;
|
|
|
|
import com.gxwebsoft.auto.dto.QrLoginConfirmRequest;
|
|
import com.gxwebsoft.auto.dto.QrLoginGenerateResponse;
|
|
import com.gxwebsoft.auto.dto.QrLoginStatusResponse;
|
|
import com.gxwebsoft.auto.service.QrLoginService;
|
|
import com.gxwebsoft.common.core.web.BaseController;
|
|
import com.gxwebsoft.common.core.web.ApiResult;
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import javax.validation.Valid;
|
|
|
|
/**
|
|
* 认证模块
|
|
*
|
|
* @author 科技小王子
|
|
* @since 2025-03-06 22:50:25
|
|
*/
|
|
@Tag(name = "认证模块")
|
|
@RestController
|
|
@RequestMapping("/api/qr-login")
|
|
public class QrLoginController extends BaseController {
|
|
|
|
@Autowired
|
|
private QrLoginService qrLoginService;
|
|
|
|
/**
|
|
* 生成扫码登录token
|
|
*/
|
|
@Operation(summary = "生成扫码登录token")
|
|
@PostMapping("/generate")
|
|
public ApiResult<?> generateQrLoginToken() {
|
|
try {
|
|
QrLoginGenerateResponse response = qrLoginService.generateQrLoginToken();
|
|
return success("生成成功", response);
|
|
} catch (Exception e) {
|
|
return fail(e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 检查扫码登录状态
|
|
*/
|
|
@Operation(summary = "检查扫码登录状态")
|
|
@GetMapping("/status/{token}")
|
|
public ApiResult<?> checkQrLoginStatus(
|
|
@Parameter(description = "扫码登录token") @PathVariable String token) {
|
|
try {
|
|
QrLoginStatusResponse response = qrLoginService.checkQrLoginStatus(token);
|
|
return success("查询成功", response);
|
|
} catch (Exception e) {
|
|
return fail(e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 确认扫码登录
|
|
*/
|
|
@Operation(summary = "确认扫码登录")
|
|
@PostMapping("/confirm")
|
|
public ApiResult<?> confirmQrLogin(@Valid @RequestBody QrLoginConfirmRequest request) {
|
|
try {
|
|
QrLoginStatusResponse response = qrLoginService.confirmQrLogin(request);
|
|
return success("确认成功", response);
|
|
} catch (Exception e) {
|
|
return fail(e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 扫码操作(可选接口,用于移动端扫码后更新状态)
|
|
*/
|
|
@Operation(summary = "扫码操作")
|
|
@PostMapping("/scan/{token}")
|
|
public ApiResult<?> scanQrCode(@Parameter(description = "扫码登录token") @PathVariable String token) {
|
|
try {
|
|
boolean result = qrLoginService.scanQrCode(token);
|
|
return success("操作成功", result);
|
|
} catch (Exception e) {
|
|
return fail(e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 微信小程序扫码登录确认(便捷接口)
|
|
*/
|
|
@Operation(summary = "微信小程序扫码登录确认")
|
|
@PostMapping("/wechat-confirm")
|
|
public ApiResult<?> wechatMiniProgramConfirm(@Valid @RequestBody QrLoginConfirmRequest request) {
|
|
try {
|
|
// 设置平台为微信小程序
|
|
request.setPlatform("miniprogram");
|
|
QrLoginStatusResponse response = qrLoginService.confirmQrLogin(request);
|
|
return success("微信小程序登录确认成功", response);
|
|
} catch (Exception e) {
|
|
return fail(e.getMessage());
|
|
}
|
|
}
|
|
|
|
}
|