Procházet zdrojové kódy

1.token验证接口完善

GouGengquan před 9 měsíci
rodič
revize
ba9112317d

+ 36 - 8
biz-base/src/main/java/com/dayou/controller/AuthController.java

@@ -2,10 +2,16 @@ package com.dayou.controller;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.dayou.bo.LoginCacheUserBO;
+import com.dayou.bo.SimpleParentModel;
 import com.dayou.constants.JwtConstants;
+import com.dayou.dto.OALoginDTO;
+import com.dayou.dto.SimplePostModel;
+import com.dayou.entity.User;
+import com.dayou.service.IUserService;
 import com.dayou.utils.JwtTokenUtil;
 import com.google.common.cache.Cache;
 import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.ExpiredJwtException;
 import io.jsonwebtoken.MalformedJwtException;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -15,34 +21,56 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.stream.Collectors;
+
 @RestController
 @RequestMapping("/auth")
 @Slf4j
-public class AuthController extends BaseController{
+public class AuthController extends BaseController {
 
     @Autowired
     @Qualifier("loginCache")
     private Cache<Long, LoginCacheUserBO> loginCache;
 
+    @Autowired
+    private IUserService userService;
+
     /**
-     * 判断token是否有效
+     * 根据token返回用户信息
+     *
      * @param token token
      * @return Boolean
      */
     @PostMapping("/checkOaToken")
-    public Boolean checkOaToken(String token) {
-        // 判断token是否过期(true:有效,false:无效)
+    public OALoginDTO checkOaToken(String token) {
+        // 根据token返回用户信息
         if (StringUtils.isNotBlank(token)) {
             try {
                 Claims claims = JwtTokenUtil.getClaimFromToken(token, JwtConstants.SECRET);
                 String subject = claims.getSubject();
                 Long userId = Long.valueOf(subject);
-                return ObjectUtil.isNotNull(loginCache.getIfPresent(userId));
-            }catch (MalformedJwtException exception){
-                return false;
+                LoginCacheUserBO loginCacheUserBO = loginCache.getIfPresent(userId);
+                if (ObjectUtil.isNotNull(loginCacheUserBO)){
+                    // 返回用户信息
+                    User user = userService.getById(userId);
+                    return new OALoginDTO()
+                            .setUserOaId(loginCacheUserBO.getId())
+                            .setName(loginCacheUserBO.getName())
+                            .setDepartmentNameList(loginCacheUserBO.getDepartmentList().stream()
+                                    .map(SimpleParentModel::getName)
+                                    .collect(Collectors.toList()))
+                            .setPostNameList(loginCacheUserBO.getPostList().stream()
+                                    .map(SimplePostModel::getName)
+                                    .collect(Collectors.toList()))
+                            .setLastUpdateTime(user.getModified())
+                            .setStaffNo(user.getStaffNo());
+                }
+                return null;
+            } catch (MalformedJwtException | ExpiredJwtException exception) {
+                return null;
             }
         } else {
-            return false;
+            return null;
         }
     }
 

+ 46 - 0
domain/src/main/java/com/dayou/dto/OALoginDTO.java

@@ -0,0 +1,46 @@
+package com.dayou.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 用于传递oa登录用户的信息到生产力平台
+ */
+@Data
+@Accessors(chain = true)
+public class OALoginDTO {
+
+    /**
+     * 用户id
+     */
+    private Long userOaId;
+
+    /**
+     * 员工工号
+     */
+    private String staffNo;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 岗位名称集合
+     */
+    private List<String> postNameList;
+
+    /**
+     * 部门名称集合
+     */
+    private List<String> departmentNameList;
+
+    /**
+     * 最后修改用户信息的时间
+     */
+    private Date lastUpdateTime;
+
+}