Преглед на файлове

优化系统管理相关代码

gaoxiong преди 2 години
родител
ревизия
c472420919

+ 11 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteUserService.java

@@ -9,6 +9,7 @@ import com.xunmei.system.api.model.LoginUser;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -51,4 +52,14 @@ public interface RemoteUserService {
     @PostMapping("/user/sync/batch")
     public R<Boolean> batchSaveSyncUser(@RequestBody List<SysUser> userList, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    /**
+     * 记录用户最后一次登录信息
+     * @param loginTime
+     * @param loginIp
+     * @param source
+     * @return
+     */
+    @PostMapping("/user/userLoginInfo")
+    R<Boolean> userLoginInfo(@RequestParam("id") Long id,@RequestParam("loginTime") Date loginTime,@RequestParam("loginIp") String loginIp,@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
 }

+ 2 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java

@@ -22,7 +22,7 @@ import com.xunmei.common.core.web.domain.BaseEntity;
 import org.bouncycastle.util.Fingerprint;
 
 /**
- * 【请填写功能名称】对象 sys_user
+ * 用户管理对象 sys_user
  *
  * @author xunmei
  * @date 2023-08-09
@@ -218,6 +218,7 @@ public class SysUser extends BaseEntity {
     @ApiModelProperty(value = "同步人员的编码")
     private String code;
 
+
     /** 机构对象 */
     @TableField(exist = false)
     private Org org;

+ 8 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteUserFallbackFactory.java

@@ -9,11 +9,12 @@ import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.List;
 
 /**
  * 用户服务降级处理
- * 
+ *
  * @author xunmei
  */
 @Component
@@ -47,6 +48,12 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
             public R<Boolean> batchSaveSyncUser(List<SysUser> userList, String source) {
                 return null;
             }
+
+            @Override
+            public R<Boolean> userLoginInfo(Long id, Date loginTime, String loginIp, String source) {
+                return null;
+            }
+
         };
     }
 }

+ 7 - 1
soc-common/soc-common-security/src/main/java/com/xunmei/common/security/service/TokenService.java

@@ -9,11 +9,13 @@ import com.xunmei.common.core.utils.ip.IpUtils;
 import com.xunmei.common.core.utils.uuid.IdUtils;
 import com.xunmei.common.redis.service.RedisService;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.system.api.RemoteUserService;
 import com.xunmei.system.api.model.LoginUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
@@ -28,6 +30,9 @@ public class TokenService {
     @Autowired
     private RedisService redisService;
 
+    @Autowired
+    private RemoteUserService remoteUserService;
+
     protected static final long MILLIS_SECOND = 1000;
 
     protected static final long MILLIS_MINUTE = 60 * MILLIS_SECOND;
@@ -146,6 +151,7 @@ public class TokenService {
         loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
         // 根据uuid将loginUser缓存
         String userKey = getTokenKey(loginUser.getToken());
+        remoteUserService.userLoginInfo(loginUser.getUserid(), new Date(), loginUser.getIpaddr(), SecurityConstants.INNER);
         //登陆后删除之前的token
         redisService.deleteByPrefix(userKey);
         redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
@@ -154,4 +160,4 @@ public class TokenService {
     private String getTokenKey(String token) {
         return ACCESS_TOKEN + token;
     }
-}
+}

+ 14 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -347,5 +347,19 @@ public class SysUserController extends BaseController {
         userService.batchSaveOrUpdate(sysUserList);
         return R.ok(true);
     }
+    /**
+     * 查询机构列表
+     */
+    @ApiOperation(value = "记录用户最后一次登录")
+    @InnerAuth
+    @PostMapping("/userLoginInfo")
+    public R<Boolean> userLoginInfo(Long id,Date loginTime, String loginIp) {
+        SysUser sysUser = userService.selectUserById(id);
+        sysUser.setLastIp(loginIp);
+        sysUser.setLastTime(loginTime);
+        userService.saveOrUpdate(sysUser);
+        return R.ok(true);
+    }
+
 
 }

+ 14 - 13
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

@@ -52,13 +52,11 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
      * 项目启动时,缓存机构数据
      */
     @PostConstruct
-    public void init()
-    {
+    public void init() {
         loadingOrgCache();
     }
 
 
-
     @Override
     public TableDataInfo<SysOrg> selectPage(SysOrg org) {
         //未删除
@@ -70,18 +68,21 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         } else {
             page = new Page<>();
         }
+        Long parentId = org.getParentId();
+        if(parentId == null){
+            parentId = SecurityUtils.getLoginUser().getSysUser().getOrgId();
+        }
+        SysOrg sysOrg = sysOrgMapper.selectById(parentId);
+
+        org.setParentId(null);
         //查询条件
         QueryWrapper<SysOrg> query = new QueryWrapper<>(org);
         //下穿
         if (org.getCheckSub()) {
-            List<Long> ids = this.selectCheckSubOrgIdList(org.getParentId());
-            //清空前端传递的org_id
-            org.setParentId(null);
-            //添加in条件
-            query.in("id", ids);
-
+            query.lambda().likeRight(SysOrg::getPath, sysOrg.getPath());
+        } else {
+            query.lambda().eq(SysOrg::getPath,sysOrg.getPath());
         }
-
         //模糊查询
         if (StringUtils.isNotNull(org.getName())) {
             query.like("name", org.getName());
@@ -248,7 +249,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     @Override
     public void loadingOrgCache() {
         QueryWrapper<SysOrg> qw = new QueryWrapper<>();
-        qw.lambda().ge(SysOrg::getDeleted,0);
+        qw.lambda().ge(SysOrg::getDeleted, 0);
         List<SysOrg> list = baseMapper.selectList(qw);
         clearOrgCache();
         redisService.setCacheList(CacheConstants.ORG_CACHE_LIST_KEY, list);
@@ -264,9 +265,9 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     public boolean saveOrUpdateOrg(SysOrg org) {
 
         boolean isOk = false;
-        if(org.getId() != null){
+        if (org.getId() != null) {
             isOk = this.updateById(org);
-        }else{
+        } else {
             isOk = this.save(org);
         }