Browse Source

场景权限验证

lyhzzz 1 year ago
parent
commit
bf52b6f185

+ 9 - 5
src/main/java/com/fdkankan/manage/controller/inner/InnerAPIController.java

@@ -3,6 +3,7 @@ package com.fdkankan.manage.controller.inner;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.manage.common.ResultCode;
 import com.fdkankan.manage.common.ResultData;
+import com.fdkankan.manage.controller.BaseController;
 import com.fdkankan.manage.entity.JySceneUserAuth;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.service.IJySceneUserAuthService;
@@ -12,14 +13,11 @@ import com.fdkankan.manage.util.RsaUtils;
 import com.fdkankan.manage.vo.request.UserParam;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/service/manage/inner")
-public class InnerAPIController {
+public class InnerAPIController extends BaseController {
 
     @Autowired
     IJyUserService jyUserService;
@@ -72,4 +70,10 @@ public class InnerAPIController {
         return ResultData.ok(jySceneUserAuthService.checkAuthOther(param));
     }
 
+
+    @GetMapping("/checkNumAuth/{num}")
+    public ResultData checkNumAuth(@PathVariable String num){
+
+        return ResultData.ok( jySceneUserAuthService.checkNumAuth(num,getToken()));
+    }
 }

+ 3 - 0
src/main/java/com/fdkankan/manage/service/IJySceneUserAuthService.java

@@ -29,4 +29,7 @@ public interface IJySceneUserAuthService extends IService<JySceneUserAuth> {
     Object checkAuthOther(JySceneUserAuth param);
 
     List<JySceneUserAuth> getByJyUserId(Integer jyUserId);
+
+    Object checkNumAuth(String num,String token);
+
 }

+ 69 - 0
src/main/java/com/fdkankan/manage/service/impl/JySceneUserAuthServiceImpl.java

@@ -1,9 +1,12 @@
 package com.fdkankan.manage.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.jwt.JWTUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.manage.common.PageInfo;
+import com.fdkankan.manage.common.RedisKeyUtil;
 import com.fdkankan.manage.common.ResultCode;
 import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.exception.BusinessException;
@@ -11,10 +14,14 @@ import com.fdkankan.manage.mapper.IJySceneUserAuthMapper;
 import com.fdkankan.manage.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.manage.vo.request.SceneParam;
+import com.fdkankan.manage.vo.response.ManageLoginResponse;
+import com.fdkankan.manage.vo.response.SceneAuthVo;
+import com.fdkankan.redis.util.RedisUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -158,6 +165,68 @@ public class JySceneUserAuthServiceImpl extends ServiceImpl<IJySceneUserAuthMapp
         return false;
     }
 
+    @Autowired
+    RedisUtil redisUtil;
+    @Autowired
+    ISysUserService sysUserService;
+    @Autowired
+    IJySceneUserAuthService jySceneUserAuthService;
+
+    @Override
+    public Object checkNumAuth(String num,String token) {
+        if(StringUtils.isBlank(num)){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        ScenePro pro = sceneProService.getByNum(num);
+        ScenePlus plus = scenePlusService.getByNum(num);
+        if(pro == null && plus == null){
+            throw new BusinessException(ResultCode.SCENE_NOT_EXITS);
+        }
+        String redisKey = String.format(RedisKeyUtil.loginToken,token);
+        if(redisUtil.hasKey(redisKey)){
+            throw new BusinessException(ResultCode.USER_NOT_LOGIN);
+        }
+        String userStr = redisUtil.get(redisKey);
+        ManageLoginResponse result = JSONObject.parseObject(userStr,ManageLoginResponse.class);
+        Long userId = result.getUserId();
+        if(userId == null){
+            redisUtil.del(redisKey);
+            throw new BusinessException(ResultCode.USER_NOT_LOGIN);
+        }
+        SceneAuthVo sceneAuthVo = new SceneAuthVo();
+
+        JySceneAuth jySceneAuth = jySceneAuthService.getByNum(num);
+        if(jySceneAuth!=null && jySceneAuth.getAuthType() == 1){
+            sceneAuthVo.setViewAuth(true);
+        }
+
+        SysUser byId = sysUserService.getById(result.getId());
+        JyUser jyUser = jyUserService.getBySysId(byId.getId());
+        JySceneUserAuth jySceneUserAuth = jySceneUserAuthService.getByNumAndJyUserId(jyUser.getId(), num);
+        if(jySceneAuth != null){
+            Date date = new Date();
+            if(jySceneUserAuth.getLookAuth() == 1 ||
+                    ( jySceneUserAuth.getLookAuth() == 2 && jySceneUserAuth.getLookEndTime().getTime() >date.getTime())){
+                sceneAuthVo.setViewAuth(true);
+            }
+            if(jySceneUserAuth.getEditAuth() == 1 ||
+                    (jySceneUserAuth.getEditAuth() == 2 && jySceneUserAuth.getEditEndTime().getTime() >date.getTime())){
+                sceneAuthVo.setEditAuth(true);
+            }
+        }
+
+        if(pro != null && jyUser.getUserId().equals(pro.getUserId())){
+            sceneAuthVo.setViewAuth(true);
+            sceneAuthVo.setEditAuth(true);
+        }
+        if(plus != null && jyUser.getUserId().equals(plus.getUserId())){
+            sceneAuthVo.setViewAuth(true);
+            sceneAuthVo.setEditAuth(true);
+        }
+
+        return sceneAuthVo;
+    }
+
     @Override
     public List<JySceneUserAuth> getByJyUserId(Integer jyUserId) {
         LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();

+ 13 - 1
src/main/java/com/fdkankan/manage/service/impl/ManageService.java

@@ -9,8 +9,10 @@ import com.fdkankan.common.util.Base64Converter;
 import com.fdkankan.common.util.SecurityUtil;
 import com.fdkankan.manage.common.RedisKeyUtil;
 import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.entity.User;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.service.ISysUserService;
+import com.fdkankan.manage.service.IUserService;
 import com.fdkankan.manage.vo.request.ManageLoginRequest;
 import com.fdkankan.manage.vo.response.ManageLoginResponse;
 import com.fdkankan.redis.constant.RedisKey;
@@ -20,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 @Service
 public class ManageService {
@@ -27,6 +30,8 @@ public class ManageService {
     @Autowired
     ISysUserService sysUserService;
     @Autowired
+    IUserService userService;
+    @Autowired
     RedisUtil redisUtil;
 
 
@@ -47,12 +52,19 @@ public class ManageService {
         if(result.getStatus() == 0){
             throw new BusinessException(ResultCode.USERNAME_ERROR);
         }
+        List<User> byUserName = userService.getByUserName(result.getUserName());
+        if(byUserName.size() <=0){
+            throw new BusinessException(ResultCode.USERNAME_ERROR);
+        }
+        User user = byUserName.get(0);
         StpUtil.login(result.getId(), SaLoginConfig
-                .setExtra("userId",result.getId())
+                .setExtra("id",result.getId())
+                .setExtra("userId",user.getId())
                 .setExtra("isAdmin",1)
                 .setExtra("userName",result.getUserName())
                 .setExtra("nickName",result.getNickName()));
         result.setToken(StpUtil.getTokenValue());
+        result.setUserId(user.getId());
         redisUtil.set(String.format(RedisKeyUtil.loginToken ,result.getToken()), JSONObject.toJSONString(result), 216000);
         return result;
     }

+ 2 - 1
src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java

@@ -331,7 +331,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
             SceneVo sceneVo = voHashMap.get(record.getNum());
             if(sceneVo !=null){
-                BeanUtil.copyProperties(sceneVo,record);
+                record.setViewCount(sceneVo.getViewCount());
+                record.setWebSite(sceneVo.getWebSite());
             }
 
             if(map !=null ){

+ 1 - 0
src/main/java/com/fdkankan/manage/vo/response/ManageLoginResponse.java

@@ -15,5 +15,6 @@ public class ManageLoginResponse {
      * 是否禁用 0禁用,1启用
      */
     private Integer status;
+    private Long userId;
 
 }

+ 9 - 0
src/main/java/com/fdkankan/manage/vo/response/SceneAuthVo.java

@@ -0,0 +1,9 @@
+package com.fdkankan.manage.vo.response;
+
+import lombok.Data;
+
+@Data
+public class SceneAuthVo {
+    private Boolean viewAuth = false;
+    private Boolean editAuth = false;
+}