Bläddra i källkod

已经开通产品修改

rgb 6 år sedan
förälder
incheckning
1614a0d3f9

+ 22 - 0
diagbotman-service/src/main/java/com/diagbot/dto/OpenProductCheckDTO.java

@@ -0,0 +1,22 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 开通产品状态校验返回类
+ * @Author: rgb
+ * @Date: 2018/11/8 14:10
+ */
+
+@Getter
+@Setter
+public class OpenProductCheckDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Boolean hasPermission ;//标志
+    private String userId;         //用户ID
+}

+ 79 - 9
diagbotman-service/src/main/java/com/diagbot/facade/ProductOrderFacade.java

@@ -1,9 +1,23 @@
 package com.diagbot.facade;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.AuthDetailDTO;
+import com.diagbot.dto.HasPermissionDTO;
 import com.diagbot.dto.OrderDetialsDTO;
 import com.diagbot.dto.ProductAuthProgressDTO;
 import com.diagbot.dto.ProductLineDTO;
@@ -12,17 +26,20 @@ import com.diagbot.dto.ProductOrderExportDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.UserOrgDTO;
 import com.diagbot.dto.WaitExamOrderCouDTO;
+import com.diagbot.entity.OpenedProducts;
 import com.diagbot.entity.OrderDetailStatus;
 import com.diagbot.entity.OrderDetails;
 import com.diagbot.entity.ProductOrder;
 import com.diagbot.entity.ProductOrderIndex;
 import com.diagbot.entity.User;
 import com.diagbot.entity.wrapper.ProductOrderWrapper;
+import com.diagbot.entity.wrapper.ServiceTokenWrapper;
 import com.diagbot.enums.AuditStatusEnum;
 import com.diagbot.enums.AuthStatusEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.NotPassEnum;
 import com.diagbot.enums.StatusEnum;
+import com.diagbot.enums.TokenTypeEnum;
 import com.diagbot.enums.VisibleIdTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -33,20 +50,13 @@ import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ExportBeanExcelUtil;
 import com.diagbot.util.GsonUtil;
+import com.diagbot.util.ListUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.AddOrderVO;
+import com.diagbot.vo.OpenProductCheckVO;
 import com.diagbot.vo.OrderDetialsVO;
 import com.diagbot.vo.ProductOrderExportVO;
 import com.diagbot.vo.ProductOrderVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 
 /**
  * 订单业务
@@ -71,6 +81,8 @@ public class ProductOrderFacade extends ProductOrderServiceImpl {
     private ProductOrderFacade productOrderFacade;
     @Autowired
     private OpenedProductsFacade openedProductsFacade;
+    @Autowired
+    private ServiceTokenFacade serviceTokenFacade;
 
 
     /**
@@ -258,6 +270,64 @@ public class ProductOrderFacade extends ProductOrderServiceImpl {
         waitExamOrderCouDTO.setCount(baseMapper.waitExamOrderCou(userIds));
         return waitExamOrderCouDTO;
     }
+    
+    /**
+     * 已开通产品状态校验
+     *
+     * @param serviceTokenVo 参数
+     * @return 是否有权限
+     */
+    public RespDTO<HasPermissionDTO> hasPermission(OpenProductCheckVO serviceTokenVo) {
+        HasPermissionDTO hasPermissionDTO = new HasPermissionDTO();
+        String appkey = serviceTokenVo.getAppkey();
+        String secret = serviceTokenVo.getSecret();
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("appkey", appkey);
+        paramMap.put("secret", secret);
+        paramMap.put("productId", serviceTokenVo.getProductId());
+
+        //获取用户的id
+        List<ServiceTokenWrapper> serviceTokenWrapperList = serviceTokenFacade.getByAppkeyAndSecretAndProductId(paramMap);
+
+        if (ListUtil.isEmpty(serviceTokenWrapperList)) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "appkey或secret错误,appkey=【" + appkey + "】," + "secret=【" + secret + "】");
+        }
+        ServiceTokenWrapper st = serviceTokenWrapperList.get(0);
+        if (StatusEnum.Disable.getKey() == st.getServiceStatus()) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该产品已停用");
+        }
+        if (TokenTypeEnum.Trial.getKey() == st.getType()) {
+            Date date = new Date();
+            if (st.getExpiringDate().getTime() < date.getTime()) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "访问权限已过期");
+            }
+        } else {
+            QueryWrapper<OpenedProducts> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
+            queryWrapper.eq("user_id", st.getUserId());
+            queryWrapper.eq("product_id", st.getProductId());
+            OpenedProducts op = openedProductsFacade.getOne(queryWrapper);
+            if (op == null) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "无权限访问");
+            }
+            Date date = new Date();
+            if (!(StatusEnum.Enable.getKey() == op.getServiceStatus())) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "当前服务已停用");
+            }
+            if (op.getStartTime().getTime() > date.getTime()) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该产品未在有效服务期内,无法使用");
+            }
+            if (op.getEndTime().getTime() < date.getTime()) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该产品已超出有效服务期,无法使用");
+            }
+        }
+        hasPermissionDTO.setHasPermission(true);
+        //获取用户的id
+        if (st.getUserId() != null) {
+            hasPermissionDTO.setUserId(st.getUserId().toString());
+        }
+        return RespDTO.onSuc(hasPermissionDTO);
+    }
 
 
 	/**

+ 22 - 0
diagbotman-service/src/main/java/com/diagbot/vo/OpenProductCheckVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: appkey 和 secret接收类
+ * @Author: rgb
+ * @Date: 2018/11/8 14:10
+ */
+@Getter
+@Setter
+public class OpenProductCheckVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String appkey;
+    private String secret;
+    private Long productId;
+}

+ 21 - 9
diagbotman-service/src/main/java/com/diagbot/web/ProductOrderController.java

@@ -1,10 +1,22 @@
 package com.diagbot.web;
 
+import java.util.List;
+
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+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 com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.EnShowOptionDTO;
 import com.diagbot.dto.GetConsoleOnTrialDTO;
 import com.diagbot.dto.GetConsoleOpenedDTO;
+import com.diagbot.dto.OpenProductCheckDTO;
 import com.diagbot.dto.OpenUpOnTrialDTO;
 import com.diagbot.dto.ProductAuthProgressDTO;
 import com.diagbot.dto.ProductOrderDTO;
@@ -20,22 +32,15 @@ import com.diagbot.facade.OrderDetailsFacade;
 import com.diagbot.facade.ProductOrderFacade;
 import com.diagbot.facade.UserRenewalsFacade;
 import com.diagbot.vo.ModifyOpeningTimeVO;
+import com.diagbot.vo.OpenProductCheckVO;
 import com.diagbot.vo.OpenUpOnTrialVO;
 import com.diagbot.vo.ProductOrderVO;
 import com.diagbot.vo.StartAndendByUserIdVO;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-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 springfox.documentation.annotations.ApiIgnore;
 
-import javax.validation.Valid;
-import java.util.List;
-
 /**
  * @author rgb
  * @Description 订单产品相关的操作
@@ -99,6 +104,13 @@ public class ProductOrderController {
     public RespDTO<WaitExamOrderCouDTO> waitExamOrderCou() {
         return RespDTO.onSuc(productOrderFacade.waitExamOrderCou());
     }
+    
+    @ApiOperation(value = "已开通产品状态校验[by:rengb]", notes = "已开通产品状态校验")
+    @PostMapping("/openProductCheck")
+    @SysLogger("openProductCheck")
+    public RespDTO<OpenProductCheckDTO> openProductCheck(OpenProductCheckVO openProductCheckVO) {
+        return RespDTO.onSuc(productOrderFacade.hasPermission(openProductCheckVO));
+    }
 
     @ApiOperation(value = "客户中心-传入用户id查询已开通的功能(传userId)[by:wangfeng]", notes = "已开通信息")
     @PostMapping("/getInformationAvailableByUserId")