Browse Source

扫码登录调整

dzx 11 months ago
parent
commit
723c68e48c

+ 4 - 0
src/main/java/com/xjrsoft/common/utils/RedisUtil.java

@@ -52,6 +52,10 @@ public class RedisUtil {
         set(key, value, NOT_EXPIRE);
     }
 
+    public void setStrValue(String key, String value) {
+        valueOperations.set(key, value);
+    }
+
 
     public <T> T get(String key, Class<T> clazz, long expire) {
         String value = valueOperations.get(key);

+ 19 - 0
src/main/java/com/xjrsoft/module/student/dto/QRLoginDto.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 学生职务设置分页查询入参
+* @Author dzx
+* @Date: 2023-11-13
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class QRLoginDto {
+    @ApiModelProperty("loginCode")
+    private String loginCode;
+}

+ 4 - 0
src/main/java/com/xjrsoft/module/student/service/impl/PbVXsxxsfytbServiceImpl.java

@@ -155,6 +155,8 @@ public class PbVXsxxsfytbServiceImpl extends MPJBaseServiceImpl<PbVXsxxsfytbMapp
                     pbVXsxxsfytbMPJLambdaWrapper.orderByAsc(PbVXsxxsfytb::getRefundmny);
                 }else if("qfje".equals(dto.getField())){
                     pbVXsxxsfytbMPJLambdaWrapper.orderByDesc(PbVXsxxsfytb::getQfje);
+                }else if("factrecarmny".equals(dto.getField())){
+                    pbVXsxxsfytbMPJLambdaWrapper.orderByAsc(PbVXsxxsfytb::getQfje);
                 }
             }else if("descend".equals(dto.getOrder())){
                 if("baseSemesterCn".equals(dto.getField())){
@@ -175,6 +177,8 @@ public class PbVXsxxsfytbServiceImpl extends MPJBaseServiceImpl<PbVXsxxsfytbMapp
                     pbVXsxxsfytbMPJLambdaWrapper.orderByDesc(PbVXsxxsfytb::getRefundmny);
                 }else if("qfje".equals(dto.getField())){
                     pbVXsxxsfytbMPJLambdaWrapper.orderByAsc(PbVXsxxsfytb::getQfje);
+                }else if("factrecarmny".equals(dto.getField())){
+                    pbVXsxxsfytbMPJLambdaWrapper.orderByDesc(PbVXsxxsfytb::getQfje);
                 }
             }
         }

+ 10 - 11
src/main/java/com/xjrsoft/module/system/controller/LoginController.java

@@ -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;
@@ -124,12 +125,12 @@ public class LoginController {
     @PostMapping("/QR-code-login")
     @ApiOperation(value = "二维码登录", notes = "code")
     @XjrLog(value = "二维码登录")
-    public RT<String> loginQRCode(@RequestBody @Valid LoginQRCodeDto dto) throws Exception {
-        Long timestamp = redisUtil.get(dto.getLoginCode() + "time", Long.class);
-        long timeMillis = System.currentTimeMillis();
-        if(timeMillis - timestamp > 300000){
-            return RT.error("二维码失效,请刷新重试");
-        }
+    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("登录成功");
@@ -141,8 +142,8 @@ public class LoginController {
     @PostMapping("/check-QR-code-login")
     @ApiOperation(value = "验证是否登录成功", notes = "验证是否登录成功")
     @XjrLog(value = "验证是否登录成功")
-    public RT<LoginCheckQRCodeVo> checkLoginQRCode(@RequestBody @Valid String loginCode) {
-        Long timestamp = redisUtil.get(loginCode + "time", Long.class);
+    public RT<LoginCheckQRCodeVo> checkLoginQRCode(@RequestBody @Valid QRLoginDto dto) {
+        Long timestamp = redisUtil.get(dto.getLoginCode() + "time", Long.class);
         if(timestamp == null){
             timestamp = System.currentTimeMillis();
         }
@@ -153,9 +154,7 @@ public class LoginController {
             return RT.ok(loginCheckQRCodeVo);
         }
 
-        redisUtil.get(loginCode, Long.class);
-
-        String token = redisUtil.get(loginCode);
+        String token = redisUtil.get(dto.getLoginCode());
 
         loginCheckQRCodeVo.setToken(token);
         loginCheckQRCodeVo.setStatus(0);

+ 3 - 3
src/main/java/com/xjrsoft/module/system/service/impl/LoginServiceImpl.java

@@ -205,19 +205,19 @@ public class LoginServiceImpl implements ILoginService {
             }
         }
         WeChatUserInfo mpOpenid = weChatUtil.getMpOpenid(dto.getCode());
-        if(StrUtil.isEmpty(mpOpenid.getOpenid())){
+        if(mpOpenid == null || (mpOpenid != null && StrUtil.isEmpty(mpOpenid.getUnionid()))){
             throw new MyException("未绑定微信公众号,无法扫码登录");
         }
         User loginUser = userService.getOne(
             Wrappers.lambdaQuery(User.class)
-            .eq(User::getOpenId, dto.getCode())
+            .eq(User::getUnionId, mpOpenid.getUnionid())
         );
 
         if (loginUser == null) {
             throw new MyException("未能查询到您的用户信息");
         }
         LoginVo pc = getLoginInfo(loginUser, "PC");
-        redisUtil.set(dto.getLoginCode(), pc.getToken(), 5 * 60);
+        redisUtil.setStrValue(dto.getLoginCode(), pc.getToken());
         return Boolean.TRUE;
     }