Эх сурвалжийг харах

soc-modules-deploy模块后台代码迁移-sql视图及对应代码修改

humingshi-7@163.com 1 жил өмнө
parent
commit
cb83158198

+ 1 - 1
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/domain/OperationLog.java

@@ -38,7 +38,7 @@ public class OperationLog implements Serializable {
     private String path;
 
     @ApiModelProperty(value = "机构ID")
-    private Integer orgId;
+    private Long orgId;
 
     @ApiModelProperty(value = "主机IP")
     private String hostIp;

+ 170 - 0
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/interceptor/TokenInterceptor.java

@@ -0,0 +1,170 @@
+package com.xunmei.deploy.interceptor;
+
+import com.alibaba.fastjson.JSON;
+import com.xunmei.common.core.utils.StringUtils;
+import com.xunmei.deploy.dao.HostInfoDao;
+import com.xunmei.deploy.domain.HostInfo;
+import com.xunmei.deploy.util.RedisPrefix;
+import com.xunmei.deploy.util.RedisTemplateUtil;
+import com.xunmei.deploy.vo.TokenCache;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.servlet.AsyncHandlerInterceptor;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 令牌验证拦截器
+ */
+@Controller
+@Component
+public class TokenInterceptor implements AsyncHandlerInterceptor {
+
+    private static final long TIME_MAX = 2 * 60 * 60;
+
+    private Logger log = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private HostInfoDao hostInfoDao;
+
+    @Resource
+    private RedisTemplateUtil redisTemplateUtil;
+
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        //获取请求中的token
+        String token = request.getHeader("Authorization");
+        //todo:
+        //判断url是否需要进行拦截
+        String basePath = request.getContextPath();
+        String path = request.getRequestURI();
+        if(!validateInterceptor(path,basePath)){
+            return true;
+        }
+        /*if(request.getSession().getAttribute("userId") == null){
+            log.error("请求:{},没有用户ID!",path);
+            return false;
+        }*/
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("application/json;charset=utf-8");
+        //验证消息头是否有token
+        if(StringUtils.isEmpty(token)){
+            log.error("请求:{},未携带令牌!",path);
+            response.setStatus(401);
+            PrintWriter writer = response.getWriter();
+            Map<String,Object> map = new HashMap<>();
+            map. put("message","无效的秘钥");
+            writer.println(JSON.toJSONString(map));
+            return false;
+        }
+
+        token = StringUtils.replace(token,"Bearer ","");
+        //验证该token是否在系统中存在
+        TokenCache tokenCache = null;
+        String result = redisTemplateUtil.get(RedisPrefix.CACHE_TOKEN_TIMES + ":" + token);
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(result)){
+            tokenCache =  JSON.parseObject(result, TokenCache.class);
+        }
+        if(tokenCache == null){
+            log.error("请求:{},令牌在中心不存在!",path);
+            response.setStatus(401);
+            PrintWriter writer = response.getWriter();
+            Map<String,Object> map = new HashMap<>();
+            map.put("message","无效的秘钥");
+            writer.println(JSON.toJSONString(map));
+            return false;
+        }
+        Long timp = tokenCache.getTokenDate();
+        if(timp == null){
+            log.error("请求:{},令牌无效!",path);
+            response.setStatus(401);
+            PrintWriter writer = response.getWriter();
+            Map<String,Object> map = new HashMap<>();
+            map.put("message","无效的秘钥");
+            writer.println(JSON.toJSONString(map));
+            return false;
+        }
+        //当前时间戳
+        long now = System.currentTimeMillis();
+
+        //验证token时间是否过期
+        long timeDiff = (now - timp) / 1000;
+        //令牌时间过期
+        if(timeDiff > TIME_MAX){
+            log.error("请求:{},令牌超时!",path);
+            response.setStatus(401);
+            PrintWriter writer = response.getWriter();
+            Map<String,Object> map = new HashMap<>();
+            map. put("message","无效的秘钥");
+            writer.println(JSON.toJSONString(map));
+
+            //过期清除缓存,清除数据库令牌和令牌时间
+            redisTemplateUtil.del(RedisPrefix.CACHE_TOKEN_TIMES + ":" + token);
+            String clientId = tokenCache.getClientId();
+            HostInfo hostInfo = hostInfoDao.selectById(clientId);
+            hostInfo.setTokenCreateTime(null);
+            hostInfo.setAccessToken(null);
+            hostInfoDao.updateById(hostInfo);
+            return false;
+        }
+
+        return true;
+    }
+
+    /***
+     * @Author gaoxiong
+     * @Description 路径是否需要被拦截
+     * @Date 9:58 2021/4/14
+     * @Param
+     * @param path
+     * @param basePath
+     * @return boolean
+     **/
+    private boolean validateInterceptor(String path,String basePath){
+
+        path = path.substring(basePath.length());
+
+/*        if(path.contains("static")){
+            return false;
+        }*/
+
+        if(path.contains("/api/deploy/register")){
+            return false;
+        }
+        if(path.contains("/api/deploy/accesstoken")){
+            return false;
+        }
+        if(path.contains("/api/deploy/package/download")){
+            return false;
+        }
+        if(path.contains("/api/deploy/frontend/synchronDate")){
+            return false;
+        }
+
+
+        if(path.contains("api/deploy/")){
+            return true;
+        }
+
+        if(path.contains("/DeployPage")){
+            return false;
+        }
+
+        if(path.contains("/deployData")){
+            return false;
+        }
+
+        return false;
+    }
+
+
+}

+ 38 - 0
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/interceptor/WebMvcConfig.java

@@ -0,0 +1,38 @@
+package com.xunmei.deploy.interceptor;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Component
+public class WebMvcConfig implements WebMvcConfigurer {
+
+    @Autowired
+    TokenInterceptor tokenInterceptor;
+
+    final String[] notInterceptPaths = {"/static"};
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(tokenInterceptor).addPathPatterns("/**").excludePathPatterns(notInterceptPaths);
+    }
+
+    /**
+     * 添加静态资源文件,外部可以直接访问地址
+     * @param registry
+     */
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+        //需要配置1:----------- 需要告知系统,这是要被当成静态文件的!
+        //第一个方法设置访问路径前缀,第二个方法设置资源路径
+        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
+    }
+
+    @Override
+    public void addViewControllers(ViewControllerRegistry registry) {
+        //registry.addViewController("/error/404").setViewName("/admin/page_error/error_404.html");
+    }
+}

+ 1 - 1
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/service/impl/HostInfoServiceImpl.java

@@ -256,7 +256,7 @@ public class HostInfoServiceImpl extends ServiceImpl<HostInfoDao, HostInfo> impl
         operationLog.setUserId(userId);
         operationLog.setUserName(userName);
         try{
-            operationLog.setOrgId(Integer.valueOf(hostInfoVo.getHostOrg()));
+            operationLog.setOrgId(hostInfoVo.getHostOrg());
         }catch (Exception e){
             operationLog.setOrgId(null);
         }

+ 1 - 1
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/vo/HostInfoVo.java

@@ -4,7 +4,7 @@ import lombok.Data;
 
 @Data
 public class HostInfoVo {
-    private Integer hostOrg;
+    private Long hostOrg;
     private String zipVersion;
     private String targetVersion;
     private String hostIp;

+ 2 - 2
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/vo/OrgVo.java

@@ -8,13 +8,13 @@ import lombok.Data;
 @Data
 public class OrgVo {
 
-    private Integer orgId;
+    private Long orgId;
 
     private String orgCode;
 
     private String orgName;
 
-    private Integer parentId;
+    private Long parentId;
 
     private Integer orderNo;
 

+ 10 - 11
soc-modules/soc-modules-deploy/src/main/resources/mapper/HostInfoDao.xml

@@ -6,12 +6,12 @@
         SELECT * FROM
         (
         SELECT t.id,t.hostName,t.hostIp,t.hostMac,t.hostStatus,t.agentVersion,
-        h.org_id AS hostOrg,h.organize_name AS hostOrgName,h.mirror_version AS mirrorVersion,h.coreTimeStamp AS coreTimeStamp,
+        h.org_id AS hostOrg,h.org_name AS hostOrgName,h.coreTimeStamp,
         t.register_date as registerDateTime,t.encryption,
         z.zip_version as zipVersion,z.target_version as targetVersion,z.status as updateStatus,
         IF ((( SELECT COUNT(*) FROM t_app_run_info WHERE app_type != 'Tool' and host_id = t.id AND running = 0 ) &lt; 1), 1, 0) AS serverStatus
         FROM t_host_info t
-        LEFT JOIN hv_host_organize h ON t.id = h.register_code
+        LEFT JOIN hv_host_org h ON t.id = h.register_code
         LEFT JOIN t_host_zip_info z on t.id = z.host_id
         <where>
             <if test="infoVo.zipVersion != '' and infoVo.zipVersion != null">
@@ -70,9 +70,8 @@
                 t.hostStatus,
                 t.agentVersion,
                 h.org_id AS hostOrg,
-                h.organize_name AS hostOrgName,
-                h.mirror_version AS mirrorVersion,
-                h.coreTimeStamp AS coreTimeStamp,
+                h.org_name AS hostOrgName,
+                h.coreTimeStamp ,
                 t.register_date as registerDateTime,
                 z.zip_version as zipVersion,
                 z.target_version as targetVersion,
@@ -81,7 +80,7 @@
                 IF ((( SELECT COUNT(*) FROM t_app_run_info WHERE app_type != 'Tool' and host_id = t.id AND running = 0 ) &lt; 1), 1, 0) AS serverStatus
             FROM
                 t_host_info t
-                LEFT JOIN hv_host_organize h ON t.id = h.register_code
+                LEFT JOIN hv_host_org h ON t.id = h.register_code
                 LEFT JOIN t_host_zip_info z on t.id = z.host_id
             where t.id = #{id}
     </select>
@@ -119,8 +118,8 @@
         h.hostStatus,h.accessToken,h.expiresIn,h.tokenType,h.scope,h.agentVersion,
         h.isPush,h.tokenCreateTime,h.coreTimeStamp,h.frontTimeStamp,h.upload_version,h.encryption
         from t_host_info h
-        left join hv_host_organize v on h.id = v.register_code
-        left join hv_organize o on v.org_id = o.organize_id
+        left join hv_host_org v on h.id = v.register_code
+        left join hv_org o on v.org_id = o.org_id
         where 1 =1
         <if test="orgId != '' and orgId != null">
             and o.is_deleted = 0 and o.path like concat('%#', #{orgId}, '#%' )
@@ -143,10 +142,10 @@
         SELECT
         h.id,h.hostName,h.hostIp,h.hostSystem,h.hostFrame,h.hostMac,h.hostOrg,h.hostStatus,h.accessToken,h.expiresIn,h.tokenType,h.scope,h.agentVersion,
         if(h.agentVersion=(SELECT h.agentVersion as version FROM t_host_info  UNION SELECT package_version as version FROM t_package_info order by version DESC limit 1 ),0,1) as upgradeFlag,
-        h.isPush,h.tokenCreateTime, h.coreTimeStamp,h.frontTimeStamp,h.upload_version,h.encryption,v.organize_name AS orgName
+        h.isPush,h.tokenCreateTime, h.coreTimeStamp,h.frontTimeStamp,h.upload_version,h.encryption,v.org_name AS orgName
         FROM t_host_info h
-        LEFT JOIN hv_host_organize v ON h.id = v.register_code
-        LEFT JOIN hv_organize o ON v.org_id = o.ORGANIZE_ID
+        LEFT JOIN hv_host_org v ON h.id = v.register_code
+        LEFT JOIN hv_org o ON v.org_id = o.org_id
         <where>
             <if test="info.hostOrg != '' and info.hostOrg != null">
                 o.IS_DELETED = 0 AND o.PATH LIKE CONCAT('%#', #{info.hostOrg}, '#%' )

+ 13 - 27
soc-modules/soc-modules-deploy/src/main/resources/mapper/OrgVoDao.xml

@@ -3,45 +3,31 @@
 <mapper namespace="com.xunmei.deploy.dao.OrgVoDao">
 
     <resultMap type="com.xunmei.deploy.vo.OrgVo" id="orgVoParam">
-        <result property="orgId" column="ORGANIZE_ID" jdbcType="INTEGER"/>
-        <result property="orgCode" column="ORGANIZE_CODE" jdbcType="VARCHAR"/>
-        <result property="orgName" column="ORGANIZE_NAME" jdbcType="VARCHAR"/>
-        <result property="orderNo" column="ORDER_NO" jdbcType="INTEGER"/>
+        <result property="orgId" column="ORG_ID" jdbcType="BIGINT"/>
+        <result property="orgCode" column="ORG_CODE" jdbcType="VARCHAR"/>
+        <result property="orgName" column="ORG_NAME" jdbcType="VARCHAR"/>
+        <result property="orderNo" column="ORDER_NO" jdbcType="BIGINT"/>
         <result property="parentId" column="PARENT_ID" jdbcType="OTHER"/>
         <result property="orgPath" column="PATH" jdbcType="VARCHAR"/>
     </resultMap>
 
     <select id="selectList" resultMap="orgVoParam">
-        select
-        ORGANIZE_ID,
-        ORGANIZE_CODE,
-        ORGANIZE_NAME,
-        ORDER_NO,
-        PARENT_ID,
-        PATH
-        from hv_organize
-        where IS_DELETED = 0
+        select org_id,org_code,org_name,order_no,parent_id,path
+        from hv_org
+        where is_deleted = 0
         <if test="search != '' and search != null">
-            and ORGANIZE_NAME LIKE CONCAT('%', #{search}, '%' )
+            and org_name like CONCAT('%', #{search}, '%' )
         </if>
     </select>
     <select id="getByOrgId" resultMap="orgVoParam">
-        select
-        ORGANIZE_ID,
-        ORGANIZE_CODE,
-        ORGANIZE_NAME,
-        ORDER_NO,
-        PARENT_ID,
-        PATH
-        from hv_organize
-        where ORGANIZE_ID = #{id}
+        select org_id,org_code,org_name,order_no,parent_id,path
+        from hv_org
+        where org_id = #{id}
 
     </select>
     <select id="getOrgIds" resultType="java.lang.String">
-        select
-        ORGANIZE_ID
-        from hv_organize
-        where PATH like concat('%',#{orgPath},'%')
+        select org_id from hv_org
+        where path like concat('%',#{orgPath},'%')
     </select>
 
 </mapper>

+ 2 - 2
soc-modules/soc-modules-deploy/src/main/resources/mapper/UpgradeBatchInfoDao.xml

@@ -38,11 +38,11 @@
         ORDER BY create_time desc
     </select>
     <select id="getHostIds" resultType="java.lang.String">
-        select REGISTER_CODE from hv_host_organize where ORG_ID = #{orgId}
+        select REGISTER_CODE from hv_host_org where ORG_ID = #{orgId}
     </select>
 
     <select id="getOrgId" resultType="java.lang.String">
-        select ORG_ID from hv_host_organize where REGISTER_CODE = #{hostId}
+        select ORG_ID from hv_host_org where REGISTER_CODE = #{hostId}
     </select>