|
|
@@ -21,6 +21,7 @@ import com.xjrsoft.config.CommonPropertiesConfig;
|
|
|
import com.xjrsoft.config.KeyCloakConfig;
|
|
|
import com.xjrsoft.module.organization.entity.User;
|
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
|
+import com.xjrsoft.module.student.dto.QRLoginDto;
|
|
|
import com.xjrsoft.module.system.dto.CaptchaDto;
|
|
|
import com.xjrsoft.module.system.dto.CreateAuthorizeUrlDto;
|
|
|
import com.xjrsoft.module.system.dto.CreateTokenDto;
|
|
|
@@ -96,9 +97,14 @@ public class LoginController {
|
|
|
|
|
|
@GetMapping(value = "/loginQRCode")
|
|
|
@ApiOperation(value="登录-二维码")
|
|
|
- @SaCheckPermission("wfstudenttextbookclaim:detail")
|
|
|
- public RT<LoginQRCodeVo> qrcode() throws Exception {
|
|
|
- String url = commonPropertiesConfig.getDomainApp() + "/system/QR-code-login?";
|
|
|
+ @SaCheckPermission("login:detail")
|
|
|
+ public RT<LoginQRCodeVo> qrcode() {
|
|
|
+ long loginCode = IdUtil.getSnowflakeNextId();
|
|
|
+ String url = commonPropertiesConfig.getDomainApp() + "pages/login/qrCodeLogin/index?loginCode="+loginCode;
|
|
|
+ String active = SpringUtil.getActiveProfile();
|
|
|
+ if(!"prod".equals(active)){
|
|
|
+ url = "http://yxh-web.ngrok.yingcaibx.com/app/#/pages/login/qrCodeLogin/index?loginCode="+loginCode;
|
|
|
+ }
|
|
|
int width = 200;
|
|
|
int height = 200;
|
|
|
int margin = 1;
|
|
|
@@ -107,7 +113,8 @@ public class LoginController {
|
|
|
String base64 = QrCodeUtil.createBase64(url, width, height, margin);
|
|
|
LoginQRCodeVo loginQRCodeVo = new LoginQRCodeVo();
|
|
|
loginQRCodeVo.setImgBase64(base64);
|
|
|
- long loginCode = IdUtil.getSnowflakeNextId();
|
|
|
+
|
|
|
+ redisUtil.set(loginCode + "time", System.currentTimeMillis());
|
|
|
loginQRCodeVo.setLoginCode(loginCode + "");
|
|
|
return RT.ok(loginQRCodeVo);
|
|
|
} catch (Exception e) {
|
|
|
@@ -118,21 +125,39 @@ public class LoginController {
|
|
|
@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));
|
|
|
+ public RT<String> loginQRCode(@RequestBody LoginQRCodeDto dto) throws Exception {
|
|
|
+// Long timestamp = redisUtil.get(dto.getLoginCode() + "time", Long.class);
|
|
|
+// long timeMillis = System.currentTimeMillis();
|
|
|
+// if(timeMillis - timestamp > 300000){
|
|
|
+// return RT.error("二维码失效,请刷新重试");
|
|
|
+// }
|
|
|
+ Boolean b = loginService.loginQRCode(dto);
|
|
|
+ if(b){
|
|
|
+ return RT.ok("登录成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ return RT.ok("登录失败,未能绑定微信公众号");
|
|
|
}
|
|
|
|
|
|
@PostMapping("/check-QR-code-login")
|
|
|
@ApiOperation(value = "验证是否登录成功", notes = "验证是否登录成功")
|
|
|
@XjrLog(value = "验证是否登录成功")
|
|
|
- public RT<LoginCheckQRCodeVo> checkLoginQRCode(@RequestBody @Valid String loginCode) {
|
|
|
- String token = redisUtil.get(loginCode);
|
|
|
+ public RT<LoginCheckQRCodeVo> checkLoginQRCode(@RequestBody @Valid QRLoginDto dto) {
|
|
|
+ Long timestamp = redisUtil.get(dto.getLoginCode() + "time", Long.class);
|
|
|
+ if(timestamp == null){
|
|
|
+ timestamp = System.currentTimeMillis();
|
|
|
+ }
|
|
|
+ long timeMillis = System.currentTimeMillis();
|
|
|
LoginCheckQRCodeVo loginCheckQRCodeVo = new LoginCheckQRCodeVo();
|
|
|
- loginCheckQRCodeVo.setToken(token);
|
|
|
- loginCheckQRCodeVo.setStatus(0);
|
|
|
- if(StrUtil.isEmpty(token)){
|
|
|
+ if(timeMillis - timestamp > 300000){
|
|
|
loginCheckQRCodeVo.setStatus(1);
|
|
|
+ return RT.ok(loginCheckQRCodeVo);
|
|
|
}
|
|
|
+
|
|
|
+ String token = redisUtil.get(dto.getLoginCode());
|
|
|
+
|
|
|
+ loginCheckQRCodeVo.setToken(token);
|
|
|
+ loginCheckQRCodeVo.setStatus(0);
|
|
|
return RT.ok(loginCheckQRCodeVo);
|
|
|
}
|
|
|
|