zhoutg 6 лет назад
Родитель
Сommit
fc0f2812cb

+ 95 - 0
diagbotman-service/src/main/java/com/diagbot/entity/ServiceTokenWithUser.java

@@ -0,0 +1,95 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 服务令牌表 (包含用户id)
+ * </p>
+ *
+ * @author zhaops
+ * @since 2018-09-18
+ */
+@Getter
+@Setter
+public class ServiceTokenWithUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    /**
+     * 是否删除 N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 产品服务关联id
+     */
+    private Long productServiceId;
+
+    /**
+     * 服务调用id
+     */
+    private String appKeyId;
+
+    /**
+     * 服务调用密码
+     */
+    private String appKeySecret;
+
+    /**
+     * 令牌类型(1:online,2:手动,3:试用)
+     */
+    private Integer type;
+
+    /**
+     * 状态(0:禁用,1:启用)
+     */
+    private Integer status;
+
+    /**
+     * 开通日期
+     */
+    private Date startingDate;
+
+    /**
+     * 到期时间
+     */
+    private Date expiringDate;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+}

+ 11 - 7
diagbotman-service/src/main/java/com/diagbot/facade/ServiceTokenFacade.java

@@ -9,6 +9,7 @@ import com.diagbot.entity.OpenedProducts;
 import com.diagbot.entity.ProductService;
 import com.diagbot.entity.ServiceInfo;
 import com.diagbot.entity.ServiceToken;
+import com.diagbot.entity.ServiceTokenWithUser;
 import com.diagbot.entity.wrapper.ServiceTokenWrapper;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.StatusEnum;
@@ -61,13 +62,13 @@ public class ServiceTokenFacade extends ServiceTokenServiceImpl {
         paramMap.put("appkey", appkey);
         paramMap.put("secret", secret);
         //ServiceToken st = this.getServiceToken(paramMap);
-        QueryWrapper<ServiceToken> qw = new QueryWrapper<>();
-        qw.eq("app_key_id", appkey).
-                eq("app_key_secret", secret);
-        ServiceToken st = this.selectOneRecord(qw);
-        if (null == st) {
-            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "appkey或secret错误,appkey=【" + appkey + "】," + "secret=【" + secret + "】");
+
+        //获取用户的id
+        List<ServiceTokenWithUser> serviceTokenWithUserList = this.getByAppkeyAndSecret(paramMap);
+        if(ListUtil.isEmpty(serviceTokenWithUserList)) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "appkey和secret错误或已失效,appkey=【" + appkey + "】," + "secret=【" + secret + "】");
         }
+        ServiceTokenWithUser st = serviceTokenWithUserList.get(0);
         if (TokenTypeEnum.Trial.getKey() == st.getType()) {
             ProductService ps = productServiceFacade.getById(st.getProductServiceId());
             if (ps == null) {
@@ -98,7 +99,10 @@ public class ServiceTokenFacade extends ServiceTokenServiceImpl {
             }
         }
         hasPermissionDTO.setHasPermission(true);
-        hasPermissionDTO.setUserId(UserUtils.getCurrentPrincipleID());
+        //获取用户的id
+        if(st.getUserId() != null) {
+            hasPermissionDTO.setUserId(st.getUserId().toString());
+        }
         return RespDTO.onSuc(hasPermissionDTO);
     }
 

+ 10 - 0
diagbotman-service/src/main/java/com/diagbot/mapper/ServiceTokenMapper.java

@@ -2,7 +2,9 @@ package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.entity.ServiceToken;
+import com.diagbot.entity.ServiceTokenWithUser;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -14,4 +16,12 @@ import java.util.Map;
  * @since 2018-09-17
  */
 public interface ServiceTokenMapper extends BaseMapper<ServiceToken> {
+
+
+    /**
+     * 根据appkey和secret获取ServiceToken信息
+     * @param map
+     * @return
+     */
+    public List<ServiceTokenWithUser> getByAppkeyAndSecret(Map map);
 }

+ 12 - 0
diagbotman-service/src/main/java/com/diagbot/service/ServiceTokenService.java

@@ -4,6 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.entity.ServiceToken;
+import com.diagbot.entity.ServiceTokenWithUser;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -30,4 +34,12 @@ public interface ServiceTokenService extends IService<ServiceToken> {
      * @return
      */
     ServiceToken selectOneRecord(QueryWrapper<ServiceToken> queryWrapper);
+
+
+    /**
+     * 根据appkey和secret获取ServiceToken信息
+     * @param map
+     * @return
+     */
+    public List<ServiceTokenWithUser> getByAppkeyAndSecret(Map map);
 }

+ 9 - 0
diagbotman-service/src/main/java/com/diagbot/service/impl/ServiceTokenServiceImpl.java

@@ -4,11 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.entity.ServiceToken;
+import com.diagbot.entity.ServiceTokenWithUser;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.mapper.ServiceTokenMapper;
 import com.diagbot.service.ServiceTokenService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 服务令牌表 服务实现类
@@ -41,4 +45,9 @@ public class ServiceTokenServiceImpl extends ServiceImpl<ServiceTokenMapper, Ser
         queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
         return this.baseMapper.selectOne(queryWrapper);
     }
+
+    @Override
+    public List<ServiceTokenWithUser> getByAppkeyAndSecret(Map map) {
+        return baseMapper.getByAppkeyAndSecret(map);
+    }
 }

+ 7 - 0
diagbotman-service/src/main/resources/mapper/ServiceTokenMapper.xml

@@ -20,4 +20,11 @@
         <result column="expiring_date" property="expiringDate"/>
         <result column="remark" property="remark"/>
     </resultMap>
+
+
+    <select id="getByAppkeyAndSecret" parameterType="java.util.Map" resultType="com.diagbot.entity.ServiceTokenWithUser">
+        SELECT a.*, c.user_id user_id FROM `diag_service_token` a, diag_product_service b, diag_service_info c
+        where a.is_deleted = 'N' and b.is_deleted = 'N' and c.is_deleted = 'N'
+        and a.app_key_id = #{appkey} and a.app_key_secret = #{secret} and a.product_service_id = b.id and b.service_id = c.id
+    </select>
 </mapper>

+ 1 - 1
gateway-service/src/main/java/com/diagbot/filter/GlobalGatewayFilter.java

@@ -94,7 +94,7 @@ public class GlobalGatewayFilter implements GlobalFilter {
         if (serviceFilters.get(serviceName) != null) {
             String appkey = request.getHeaders().getFirst("appKeyId");
             String secret = request.getHeaders().getFirst("appKeySecret");
-            Long productId = SERVICE_FILTER.get(serviceName);
+            Long productId = serviceFilters.get(serviceName);
             //获取appkey,secret对应的权限信息
             ServiceToken st = new ServiceToken();
             st.setAppkey(appkey);