瀏覽代碼

Merge remote-tracking branch 'origin/dev/one' into dev/one

wangyu 6 年之前
父節點
當前提交
eb8e807d30

+ 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);
+    }
 }

+ 1 - 0
diagbotman-service/src/main/resources/mapper/OpenedProductsMapper.xml

@@ -154,6 +154,7 @@
         ON a.product_id=b.id
         WHERE
         a.is_deleted = "N"
+        AND b.is_deleted = "N"
         <if test="userId !=null">
             AND a.user_id = #{userId}
         </if>

+ 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);

+ 3 - 0
user-service/src/main/java/com/diagbot/facade/UserFacade.java

@@ -43,6 +43,7 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.ServiceErrorCode;
 import com.diagbot.idc.VisibleIdCreater;
+import com.diagbot.service.TokenService;
 import com.diagbot.service.impl.UserServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
@@ -971,6 +972,8 @@ public class UserFacade extends UserServiceImpl {
         if (!res) {
             throw new CommonException(CommonErrorCode.UPDATE_INFO_FAIL);
         }
+        //删除用户成功后把token也删除
+        tokenFacade.deleteToken(String.valueOf(baseIdVO.getId()));
         return RespDTO.onSuc(res);
     }
 

+ 6 - 0
user-service/src/main/java/com/diagbot/service/TokenService.java

@@ -26,4 +26,10 @@ public interface TokenService {
      */
     Boolean verifyToken(String token, Integer type);
 
+    /**
+     *  删除用户token
+     * @param userId 用户ID
+     * @return 删除是否成功
+     */
+    Boolean deleteToken(String userId);
 }

+ 17 - 0
user-service/src/main/java/com/diagbot/service/impl/TokenServiceImpl.java

@@ -125,4 +125,21 @@ public class TokenServiceImpl implements TokenService {
 
         return res;
     }
+
+    /**
+     *  删除用户token
+     * @param userId 用户ID
+     * @return 删除是否成功
+     */
+    @Override
+    public Boolean deleteToken(String userId){
+        final byte[] redis_key = getUserTokenKey(userId);
+        Long l = (Long) redisForToken.execute(new RedisCallback<Long>() {
+            @Override
+            public Long doInRedis(RedisConnection connection) throws DataAccessException {
+                return connection.del(redis_key);
+            }
+        });
+        return l > 0;
+    }
 }

+ 2 - 2
user-service/src/main/resources/mapper/UserMapper.xml

@@ -412,7 +412,7 @@
             AND u.username LIKE CONCAT('%', #{userOrg.userName}, '%')
         </if>
          <if test="userOrg.startTime != null and userOrg.endTime != null">
-            AND u.gmt_create BETWEEN #{userOrg.startTime} and #{userOrg.endTime}
+            AND u.passauth_time BETWEEN #{userOrg.startTime} and #{userOrg.endTime}
         </if>
         AND u.auth_status = 1
         ORDER BY u.passauth_time DESC
@@ -618,7 +618,7 @@
             AND u.username LIKE CONCAT('%', #{Verified.userName}, '%')
         </if>
          <if test="Verified.startTime != null and Verified.endTime != null">
-            AND u.gmt_create BETWEEN #{Verified.startTime} and #{Verified.endTime}
+            AND u.passauth_time BETWEEN #{Verified.startTime} and #{Verified.endTime}
         </if>
         AND u.auth_status = 1
         ORDER BY u.passauth_time DESC