Explorar o código

解决数据隔离bug

oyq28 %!s(int64=3) %!d(string=hai) anos
pai
achega
4e6782a1f8

+ 1 - 0
imcs-admin-boot/imcs-authority-controller/src/main/java/com/github/zuihou/authority/controller/common/LoginLogController.java

@@ -53,6 +53,7 @@ public class LoginLogController extends SuperController<LoginLogService, Long, L
                 // 忽略 Wraps.q(model); 时, account  和 requestIp 字段的默认查询规则,
                 // 忽略 Wraps.q(model); 时, account  和 requestIp 字段的默认查询规则,
                 .ignore(LoginLog::setAccount)
                 .ignore(LoginLog::setAccount)
                 .ignore(LoginLog::setRequestIp)
                 .ignore(LoginLog::setRequestIp)
+                .ne(LoginLog::getUserName, "平台超管")
                 // 使用 自定义的查询规则
                 // 使用 自定义的查询规则
                 .likeRight(LoginLog::getAccount, model.getAccount())
                 .likeRight(LoginLog::getAccount, model.getAccount())
                 .likeRight(LoginLog::getRequestIp, model.getRequestIp());
                 .likeRight(LoginLog::getRequestIp, model.getRequestIp());

+ 24 - 5
imcs-admin-boot/imcs-authority-controller/src/main/java/com/github/zuihou/authority/controller/common/OptLogController.java

@@ -1,6 +1,7 @@
 package com.github.zuihou.authority.controller.common;
 package com.github.zuihou.authority.controller.common;
 
 
 
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.zuihou.authority.dto.common.OptLogUpdateDTO;
 import com.github.zuihou.authority.dto.common.OptLogUpdateDTO;
 import com.github.zuihou.authority.entity.common.OptLog;
 import com.github.zuihou.authority.entity.common.OptLog;
@@ -8,9 +9,14 @@ import com.github.zuihou.authority.service.common.OptLogService;
 import com.github.zuihou.base.R;
 import com.github.zuihou.base.R;
 import com.github.zuihou.base.controller.SuperController;
 import com.github.zuihou.base.controller.SuperController;
 import com.github.zuihou.base.request.PageParams;
 import com.github.zuihou.base.request.PageParams;
+import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
+import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
 import com.github.zuihou.log.annotation.SysLog;
 import com.github.zuihou.log.annotation.SysLog;
 import com.github.zuihou.log.entity.OptLogDTO;
 import com.github.zuihou.log.entity.OptLogDTO;
 import com.github.zuihou.security.annotation.PreAuth;
 import com.github.zuihou.security.annotation.PreAuth;
+import com.github.zuihou.tenant.dto.InterfaceModulePageDTO;
+import com.github.zuihou.tenant.entity.InterfaceModule;
+import com.github.zuihou.tenant.entity.Productionresource;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -36,14 +42,27 @@ import java.time.LocalDateTime;
 @PreAuth(replace = "optLog:")
 @PreAuth(replace = "optLog:")
 public class OptLogController extends SuperController<OptLogService, Long, OptLog, OptLog, OptLogDTO, OptLogUpdateDTO> {
 public class OptLogController extends SuperController<OptLogService, Long, OptLog, OptLog, OptLogDTO, OptLogUpdateDTO> {
 
 
+//    @Override
+//    @ApiOperation(value = "分页列表查询")
+//    @PostMapping(value = "/page")
+//    @PreAuth("hasPermit('{}view')")
+//    public R<IPage<OptLog>> page(@RequestBody @Validated PageParams<OptLog> params) {
+//        return super.page(params);
+//    }
+
     @Override
     @Override
-    @ApiOperation(value = "分页列表查询")
-    @PostMapping(value = "/page")
-    @PreAuth("hasPermit('{}view')")
-    public R<IPage<OptLog>> page(@RequestBody @Validated PageParams<OptLog> params) {
-        return super.page(params);
+    public void query(PageParams<OptLog> params, IPage<OptLog> page, Long defSize){
+        OptLog optLog = params.getModel();
+        QueryWrap<OptLog> wrap = handlerWrapper(null, params);
+        LbqWrapper<OptLog> wrapper = wrap.lambda();
+        wrapper.ne(OptLog::getUserName, "平台超管").like(OptLog::getUserName, optLog.getUserName())
+                .like(OptLog::getRequestIp, optLog.getRequestIp()).geHeader(OptLog::getCreateTime, optLog.getCreateTime_st())
+                .leFooter(OptLog::getCreateTime, optLog.getCreateTime_ed());
+
+        this.baseService.page(page, wrapper);
     }
     }
 
 
+
     @ApiOperation("清空日志")
     @ApiOperation("清空日志")
     @DeleteMapping("clear")
     @DeleteMapping("clear")
     @SysLog("清空日志")
     @SysLog("清空日志")

+ 9 - 0
imcs-admin-boot/imcs-authority-entity/src/main/java/com/github/zuihou/authority/entity/common/OptLog.java

@@ -176,6 +176,15 @@ public class OptLog extends SuperEntity<Long> {
     private String ua;
     private String ua;
 
 
 
 
+    @ApiModelProperty(value = "开始创建时间")
+    @TableField(exist = false)
+    private LocalDateTime createTime_st;
+
+    @ApiModelProperty(value = "截止创建时间")
+    @TableField(exist = false)
+    private LocalDateTime createTime_ed;
+
+
     @Builder
     @Builder
     public OptLog(Long id, LocalDateTime createTime, Long createUser,
     public OptLog(Long id, LocalDateTime createTime, Long createUser,
                   String requestIp, LogType type, String userName, String description, String classPath,
                   String requestIp, LogType type, String userName, String description, String classPath,

+ 20 - 15
imcs-admin-boot/imcs-authority-server/src/main/java/com/github/zuihou/job/DashboardJob.java

@@ -33,13 +33,17 @@ import com.github.zuihou.database.mybatis.auth.DataScope;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
 import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
+import com.github.zuihou.exception.BizException;
+import com.github.zuihou.exception.code.ExceptionCode;
 import com.github.zuihou.jwt.utils.JwtUtil;
 import com.github.zuihou.jwt.utils.JwtUtil;
 import com.github.zuihou.security.model.SysUser;
 import com.github.zuihou.security.model.SysUser;
+import com.github.zuihou.utils.Charsets;
 import com.github.zuihou.utils.DateUtils;
 import com.github.zuihou.utils.DateUtils;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Maps;
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.ExpiredJwtException;
+import io.jsonwebtoken.Jwts;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.cxf.security.claims.authorization.Claim;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.slf4j.MDC;
 import org.slf4j.MDC;
@@ -100,25 +104,12 @@ public class DashboardJob {
         BaseContextHandler.setTenant("0000");
         BaseContextHandler.setTenant("0000");
 
 
         List<String> userIds = webSocketServer.getUserIds();
         List<String> userIds = webSocketServer.getUserIds();
-        //List<Session> sessions = webSocketServer.getSessions();
         userIds.forEach(item->{
         userIds.forEach(item->{
             List<Session> sessions = webSocketServer.getSessions(item);
             List<Session> sessions = webSocketServer.getSessions(item);
-            String userid = JwtUtil.parseJWT(item).get("userid").toString();
+            String userid = this.parseJWT(item).get("userid").toString();
             this.broadCastData(userid, sessions);
             this.broadCastData(userid, sessions);
             //webSocketServer.BroadCastInfo(pushMsg, sessions);
             //webSocketServer.BroadCastInfo(pushMsg, sessions);
         });
         });
-
-            //logger.info("推送前端======"+pushMsg);
-            //webSocketServer.BroadCastInfo(pushMsg);
-            //更新推送状态
-//            if(CollectionUtil.isNotEmpty(warnData.getRecords())) {
-//                Long[] ids = warnData.getRecords().stream().map(item -> {
-//                    return item.getId();
-//                }).toArray(Long[]::new);
-//                UpdateWrapper<AAutoNodeLog> updateWrapper = new UpdateWrapper<AAutoNodeLog>();
-//                updateWrapper.lambda().set(AAutoNodeLog::getSendStatus, "1").in(AAutoNodeLog::getId, ids);
-//                autoNodeLogService.update(null, updateWrapper);
-//            }
     }
     }
 
 
     private void broadCastData(String userid, List<Session> sessions){
     private void broadCastData(String userid, List<Session> sessions){
@@ -211,6 +202,20 @@ public class DashboardJob {
         }
         }
     }
     }
 
 
+    private Claims parseJWT(String token){
+        Claims claims = null;
+        try {
+            claims = Jwts.parserBuilder()
+                    .setSigningKey(Base64.getDecoder().decode(BaseContextConstants.JWT_SIGN_KEY)) // 设置标识名
+                    .build()
+                    .parseClaimsJws(token)  //解析token
+                    .getBody();
+        } catch (ExpiredJwtException e) {
+            claims = e.getClaims();
+        }
+        return claims;
+    }
+
 
 
     private  QueryWrap handlerWrapper(Object model, PageParams params) {
     private  QueryWrap handlerWrapper(Object model, PageParams params) {
         QueryWrap wrapper = model == null ? Wraps.q() : Wraps.q(model);
         QueryWrap wrapper = model == null ? Wraps.q() : Wraps.q(model);