|
|
@@ -1,7 +1,9 @@
|
|
|
package com.xjrsoft.module.system.controller;
|
|
|
|
|
|
+import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
import cn.dev33.satoken.session.SaSession;
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
+import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
import cn.hutool.jwt.JWT;
|
|
|
@@ -11,8 +13,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.xjrsoft.common.annotation.XjrLog;
|
|
|
import com.xjrsoft.common.constant.GlobalConstant;
|
|
|
import com.xjrsoft.common.model.result.R;
|
|
|
+import com.xjrsoft.common.model.result.RT;
|
|
|
import com.xjrsoft.common.sms.SmsCtcc;
|
|
|
+import com.xjrsoft.common.utils.QrCodeUtil;
|
|
|
import com.xjrsoft.common.utils.RedisUtil;
|
|
|
+import com.xjrsoft.config.CommonPropertiesConfig;
|
|
|
import com.xjrsoft.config.KeyCloakConfig;
|
|
|
import com.xjrsoft.module.organization.entity.User;
|
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
|
@@ -23,8 +28,11 @@ import com.xjrsoft.module.system.dto.KeyCloakLoginInfoDto;
|
|
|
import com.xjrsoft.module.system.dto.LoginByCodeDto;
|
|
|
import com.xjrsoft.module.system.dto.LoginCaptchaDto;
|
|
|
import com.xjrsoft.module.system.dto.LoginDto;
|
|
|
+import com.xjrsoft.module.system.dto.LoginQRCodeDto;
|
|
|
import com.xjrsoft.module.system.service.ILoginService;
|
|
|
import com.xjrsoft.module.system.service.IOauthService;
|
|
|
+import com.xjrsoft.module.system.vo.LoginCheckQRCodeVo;
|
|
|
+import com.xjrsoft.module.system.vo.LoginQRCodeVo;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
@@ -38,6 +46,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.validation.Valid;
|
|
|
@@ -69,6 +78,8 @@ public class LoginController {
|
|
|
|
|
|
private IOauthService oauthService;
|
|
|
|
|
|
+ private final CommonPropertiesConfig commonPropertiesConfig;
|
|
|
+
|
|
|
@PostMapping("/login")
|
|
|
@ApiOperation(value = "登录", notes = "传入账号:account,密码:password")
|
|
|
@XjrLog(value = "账号密码登录成功")
|
|
|
@@ -83,8 +94,50 @@ public class LoginController {
|
|
|
return R.ok(loginService.loginByCode(dto));
|
|
|
}
|
|
|
|
|
|
+ @GetMapping(value = "/loginQRCode")
|
|
|
+ @ApiOperation(value="登录-二维码")
|
|
|
+ @SaCheckPermission("wfstudenttextbookclaim:detail")
|
|
|
+ public RT<LoginQRCodeVo> qrcode() throws Exception {
|
|
|
+ String url = commonPropertiesConfig.getDomainApp() + "/system/QR-code-login?";
|
|
|
+ int width = 200;
|
|
|
+ int height = 200;
|
|
|
+ int margin = 1;
|
|
|
+
|
|
|
+ try {
|
|
|
+ String base64 = QrCodeUtil.createBase64(url, width, height, margin);
|
|
|
+ LoginQRCodeVo loginQRCodeVo = new LoginQRCodeVo();
|
|
|
+ loginQRCodeVo.setImgBase64(base64);
|
|
|
+ long loginCode = IdUtil.getSnowflakeNextId();
|
|
|
+ loginQRCodeVo.setLoginCode(loginCode + "");
|
|
|
+ return RT.ok(loginQRCodeVo);
|
|
|
+ } catch (Exception e) {
|
|
|
+ return RT.error(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/QR-code-login")
|
|
|
+ @ApiOperation(value = "二维码登录", notes = "code")
|
|
|
+ @XjrLog(value = "二维码登录")
|
|
|
+ public R loginQRCode(@RequestBody @Valid LoginQRCodeDto dto) throws Exception {
|
|
|
+ return R.ok(loginService.loginQRCode(dto));
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/check-QR-code-login")
|
|
|
+ @ApiOperation(value = "验证是否登录成功", notes = "验证是否登录成功")
|
|
|
+ @XjrLog(value = "验证是否登录成功")
|
|
|
+ public RT<LoginCheckQRCodeVo> checkLoginQRCode(@RequestBody @Valid String loginCode) {
|
|
|
+ String token = redisUtil.get(loginCode);
|
|
|
+ LoginCheckQRCodeVo loginCheckQRCodeVo = new LoginCheckQRCodeVo();
|
|
|
+ loginCheckQRCodeVo.setToken(token);
|
|
|
+ loginCheckQRCodeVo.setStatus(0);
|
|
|
+ if(StrUtil.isEmpty(token)){
|
|
|
+ loginCheckQRCodeVo.setStatus(1);
|
|
|
+ }
|
|
|
+ return RT.ok(loginCheckQRCodeVo);
|
|
|
+ }
|
|
|
+
|
|
|
@PostMapping("/bindOpenid")
|
|
|
- @ApiOperation(value = "登录", notes = "code")
|
|
|
+ @ApiOperation(value = "登录", notes = "登录")
|
|
|
@XjrLog(value = "code换Openid并绑定")
|
|
|
public R bindOpenid(@RequestBody @Valid LoginByCodeDto dto) throws Exception {
|
|
|
return R.ok(loginService.bindOpenid(dto));
|