Explorar o código

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

rgb %!s(int64=6) %!d(string=hai) anos
pai
achega
8b752fd30d

+ 17 - 1
diagbotman-service/src/main/java/com/diagbot/dto/OpenUpOnTrialDTO.java

@@ -17,6 +17,22 @@ public class OpenUpOnTrialDTO implements Serializable {
     private static final long serialVersionUID = 1L;
 
 
-    private ServiceToken serviceToken;
+//    private ServiceToken serviceToken;
+    
+    
+    /**
+     * 试用地址
+     */
+    private String trialUrl;
+
+    /**
+     * 
+     */
+    private String appKeyId;
+    
+    /**
+     * 
+     */
+    private String appKeySecret;
 
 }

+ 15 - 5
diagbotman-service/src/main/java/com/diagbot/dto/ProductAuthProgressDTO.java

@@ -20,14 +20,24 @@ public class ProductAuthProgressDTO implements Serializable {
      */
     private static final long serialVersionUID = 1L;
 
+//    /**
+//     * 订单编号
+//     */
+//    private String num;
+//
+//    /**
+//     * 订单详情
+//     */
+//    private List<AuthDetailDTO> products;
+    
     /**
-     * 订单编号
+     * 待审核和审核通过的订单明细
      */
-    private String num;
-
+    private List<AuthDetailDTO> passProduct;
+    
     /**
-     * 订单详情
+     * 审核不通过的订单明细
      */
-    private List<AuthDetailDTO> products;
+    private List<AuthDetailDTO> failProduct;
 
 }

+ 3 - 3
diagbotman-service/src/main/java/com/diagbot/enums/NotPassEnum.java

@@ -9,9 +9,9 @@ import lombok.Setter;
  * @time: 11:06 2018/9/27
  */
 public enum NotPassEnum implements KeyedNamed {
-    ImperfectInformation(1, "账号信息不完善"),
-    AgencyError(2, "机构有误"),
-    CancellationOfOrder(3,"取消订单");
+    ImperfectInformation(1, "产品即将升级"),
+    AgencyError(2, "付款异常"),
+    CancellationOfOrder(3,"取消购买");
 
     @Setter
     private Integer key;

+ 4 - 5
diagbotman-service/src/main/java/com/diagbot/facade/LantoneProductFacade.java

@@ -47,7 +47,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
-import java.util.Calendar;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -261,15 +261,14 @@ public class LantoneProductFacade extends LantoneProductServiceImpl {
             String[] chargeTypeArray = new String[chargeType.length];
 
             // 仅线上模式
-            if (accessType.length == 1 && accessType[0].equals(AccessTypeEnum.Online.getKey())) {
+            if (accessType.length == 1 && Integer.valueOf(accessType[0]).equals(AccessTypeEnum.Online.getKey())) {
                 product.setOnlyOnline(true);
             }
 
             // 产品是否在有效期内 该产品未在有效服务期内,无法使用
-            Calendar calendar = Calendar.getInstance();
-            if (calendar.after(product.getEndTime())) {
+            if (product.getEndTime().before(new Date())) {
                 product.setIsExpired(true);
-            } else if (calendar.before(product.getStartTime())) {
+            } else if (product.getStartTime().after(new Date())) {
                 product.setUnStarted(true);
             }
 

+ 34 - 9
diagbotman-service/src/main/java/com/diagbot/facade/OpenedProductsFacade.java

@@ -1,5 +1,13 @@
 package com.diagbot.facade;
 
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
 import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.EnShowOptionDTO;
 import com.diagbot.dto.GetConsoleOnTrialDTO;
@@ -11,6 +19,7 @@ import com.diagbot.entity.LantoneProduct;
 import com.diagbot.entity.OpenedProducts;
 import com.diagbot.entity.ProductService;
 import com.diagbot.entity.ServiceInfo;
+import com.diagbot.entity.ServiceToken;
 import com.diagbot.entity.User;
 import com.diagbot.entity.UserRenewals;
 import com.diagbot.enums.AccessTypeEnum;
@@ -29,13 +38,6 @@ import com.diagbot.vo.ModifyOpeningTimeVO;
 import com.diagbot.vo.OpenUpOnTrialVO;
 import com.diagbot.vo.ProductServiceSaveVO;
 import com.diagbot.vo.StartAndendByUserIdVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 
 /**
  * @Description:已开通产品业务层
@@ -58,6 +60,8 @@ public class OpenedProductsFacade extends OpenedProductsServiceImpl {
     private ProductOrderFacade productOrderFacade;
     @Autowired
     private UserServiceClient userServiceClient;
+    @Autowired
+    private ServiceTokenFacade serviceTokenFacade;
 
     public List<OpenedProducts> getByAppkeyAndSecretFac(Map map) {
         return this.getByAppkeyAndSecret(map);
@@ -142,13 +146,34 @@ public class OpenedProductsFacade extends OpenedProductsServiceImpl {
      * @return 包含token
      */
     public OpenUpOnTrialDTO openUpOnTrial(OpenUpOnTrialVO openUpOnTrialVO) {
+    	OpenUpOnTrialDTO openUpOnTrialDTO = new OpenUpOnTrialDTO();
+    	
         LantoneProduct lantoneProduct =new LantoneProduct();
         lantoneProduct.setId(openUpOnTrialVO.getProductId());
         LantoneProduct lantoneProducts = lantoneProductFacade.getById(lantoneProduct);
         if (null == lantoneProducts || IsDeleteEnum.Y.getKey().equals(lantoneProducts.getIsDeleted())){
             throw new CommonException(CommonErrorCode.NOT_EXISTS, "该产品已删除");
         }
+        if(StatusEnum.Disable.getKey()==lantoneProducts.getServiceStatus()){
+        	throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "该产品已停用");
+        }
+        openUpOnTrialDTO.setTrialUrl(lantoneProduct.getTrialUrl());
         Long userId = Long.parseLong(UserUtils.getCurrentPrincipleID());
+        //验证用户是否生成过试用
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("userId", userId.toString());
+        paramMap.put("productId", openUpOnTrialVO.getProductId());
+        ServiceToken serviceToken = serviceTokenFacade.getTryTokenByUserIdAndProductId(paramMap);
+        if (serviceToken!=null){
+        	Date now = new Date();
+            if(serviceToken.getExpiringDate().getTime()<now.getTime()){
+            	throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "该产品已过期");
+            }
+            openUpOnTrialDTO.setAppKeyId(serviceToken.getAppKeyId());
+            openUpOnTrialDTO.setAppKeySecret(serviceToken.getAppKeySecret());
+            return openUpOnTrialDTO;
+        }
+        
         Date now = new Date();
         ServiceInfo serviceInfo = new ServiceInfo();
         serviceInfo.setType(ServiceTypeEnum.Sys_Create.getKey());
@@ -174,8 +199,8 @@ public class OpenedProductsFacade extends OpenedProductsServiceImpl {
         productServiceSaveVO.setType(TokenTypeEnum.Trial.getKey());
         ProductServiceDTO poroductServiceDTO = productServiceFacade.genProductService(productServiceSaveVO);
 
-        OpenUpOnTrialDTO openUpOnTrialDTO = new OpenUpOnTrialDTO();
-        openUpOnTrialDTO.setServiceToken(poroductServiceDTO.getServiceToken());
+        openUpOnTrialDTO.setAppKeyId(poroductServiceDTO.getServiceToken().getAppKeyId());
+        openUpOnTrialDTO.setAppKeySecret(poroductServiceDTO.getServiceToken().getAppKeySecret());
 
         return openUpOnTrialDTO;
     }

+ 46 - 28
diagbotman-service/src/main/java/com/diagbot/facade/ProductOrderFacade.java

@@ -76,37 +76,55 @@ public class ProductOrderFacade extends ProductOrderServiceImpl {
      *
      * @return 包含产品当前的认证状态
      */
-    public List<ProductAuthProgressDTO> productAuthProgress() {
-        List<ProductAuthProgressDTO> retList = new ArrayList<ProductAuthProgressDTO>();
-        Long userId = Long.parseLong(UserUtils.getCurrentPrincipleID());
-        List<ProductOrder> orderList = baseMapper.getUserProductOrder(userId);
-        List<String> nums = new ArrayList<>();
-        for (ProductOrder i : orderList) {
-            nums.add(i.getNum());
-        }
-        
-        if(nums.size()==0){
-        	return retList;
-        }
+    public ProductAuthProgressDTO productAuthProgress() {
+//        List<ProductAuthProgressDTO> retList = new ArrayList<ProductAuthProgressDTO>();
+//        Long userId = Long.parseLong(UserUtils.getCurrentPrincipleID());
+//        List<ProductOrder> orderList = baseMapper.getUserProductOrder(userId);
+//        List<String> nums = new ArrayList<>();
+//        for (ProductOrder i : orderList) {
+//            nums.add(i.getNum());
+//        }
+//        
+//        if(nums.size()==0){
+//        	return retList;
+//        }
         
-        List<AuthDetailDTO> detailList = baseMapper.getOrderDetailsByNums(nums);
-        List<AuthDetailDTO> products = null;
-        Map<String, List<AuthDetailDTO>> detailMap = detailList.stream().collect(Collectors.groupingBy(AuthDetailDTO::getNum));
-        for (String num : detailMap.keySet()) {
-            ProductAuthProgressDTO productAuthProgressDTO = new ProductAuthProgressDTO();
-            productAuthProgressDTO.setNum(num);
-            products = detailMap.get(num);
-            for(AuthDetailDTO i : products){
-            	i.setAuditStatusMsg(AuditStatusEnum.getName(i.getAuditStatus()));
-            	if(i.getRejectType()!=null&&i.getRejectType()!=-1){
-            		i.setRejectReason(NotPassEnum.getName(i.getRejectType()));
-            	}
-            }
-            productAuthProgressDTO.setProducts(products);
-            retList.add(productAuthProgressDTO);
+//        List<AuthDetailDTO> detailList = baseMapper.getOrderDetailsByNums(nums);
+//        List<AuthDetailDTO> products = null;
+//        Map<String, List<AuthDetailDTO>> detailMap = detailList.stream().collect(Collectors.groupingBy(AuthDetailDTO::getNum));
+//        for (String num : detailMap.keySet()) {
+//            ProductAuthProgressDTO productAuthProgressDTO = new ProductAuthProgressDTO();
+//            productAuthProgressDTO.setNum(num);
+//            products = detailMap.get(num);
+//            for(AuthDetailDTO i : products){
+//            	i.setAuditStatusMsg(AuditStatusEnum.getName(i.getAuditStatus()));
+//            	if(i.getRejectType()!=null&&i.getRejectType()!=-1){
+//            		i.setRejectReason(NotPassEnum.getName(i.getRejectType()));
+//            	}
+//            }
+//            productAuthProgressDTO.setProducts(products);
+//            retList.add(productAuthProgressDTO);
+//        }
+        Long userId = Long.parseLong(UserUtils.getCurrentPrincipleID());
+        List<AuthDetailDTO> detailList = baseMapper.getOrderDetailsByUserId(userId);
+        List<AuthDetailDTO> passProduct = new ArrayList<>();
+        List<AuthDetailDTO> failProduct = new ArrayList<>();
+        for(AuthDetailDTO i : detailList){
+        	i.setAuditStatusMsg(AuditStatusEnum.getName(i.getAuditStatus()));
+        	if(i.getRejectType()!=null&&i.getRejectType()!=-1){
+        		i.setRejectReason(NotPassEnum.getName(i.getRejectType()));
+        	}
+        	if(i.getAuditStatus()==0){
+        		failProduct.add(i);
+        	}else{
+        		passProduct.add(i);
+        	}
         }
 
-        return retList;
+        ProductAuthProgressDTO productAuthProgressDTO = new ProductAuthProgressDTO();
+        productAuthProgressDTO.setPassProduct(passProduct);
+        productAuthProgressDTO.setFailProduct(failProduct);
+        return productAuthProgressDTO;
     }
     
     /**

+ 14 - 4
diagbotman-service/src/main/java/com/diagbot/facade/ProductServiceFacade.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.dto.ProductServiceDTO;
 import com.diagbot.entity.LantoneProduct;
+import com.diagbot.entity.OpenedProducts;
 import com.diagbot.entity.ProductService;
 import com.diagbot.entity.ServiceInfo;
 import com.diagbot.entity.ServiceToken;
@@ -41,6 +42,8 @@ public class ProductServiceFacade extends ProductServiceServiceImpl {
     private ServiceInfoFacade serviceInfoFacade;
     @Autowired
     private LantoneProductFacade lantoneProductFacade;
+    @Autowired
+    private OpenedProductsFacade openedProductsFacade;
 
     /**
      * 建立产品服务端关联并生成令牌
@@ -52,18 +55,25 @@ public class ProductServiceFacade extends ProductServiceServiceImpl {
         ProductServiceDTO productServiceDTO = new ProductServiceDTO();
         Long operatorId = Long.parseLong(UserUtils.getCurrentPrincipleID());
         Long userId = null;
-        if (null != productServiceSaveVO.getUserId()){
+        if (null != productServiceSaveVO.getUserId()) {
             userId = productServiceSaveVO.getUserId();
         } else {
             userId = operatorId;
         }
         LantoneProduct lantoneProduct = lantoneProductFacade.getById(productServiceSaveVO.getProductId());
-        if (lantoneProduct == null) {
+        if (lantoneProduct == null || lantoneProduct.getIsDeleted().equals(IsDeleteEnum.Y.getKey()) || lantoneProduct.getServiceStatus().equals(StatusEnum.Disable.getKey())) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS,
+                    "产品异常,请刷新页面");
+        }
+        QueryWrapper<OpenedProducts> openedProductsQueryWrapper = new QueryWrapper<>();
+        openedProductsQueryWrapper.eq("product_id", lantoneProduct.getId()).eq("user_id", userId).eq("is_deleted", IsDeleteEnum.N.getKey());
+        OpenedProducts openedProducts = openedProductsFacade.getOne(openedProductsQueryWrapper);
+        if (openedProducts == null || openedProducts.getServiceStatus().equals(StatusEnum.Disable.getKey()) || openedProducts.getEndTime().before(new Date())) {
             throw new CommonException(CommonErrorCode.NOT_EXISTS,
-                    "找不到产品【" + lantoneProduct.getName() + "】");
+                    "产品异常,请刷新页面");
         }
         ServiceInfo serviceInfo = serviceInfoFacade.getById(productServiceSaveVO.getServiceId());
-        if (serviceInfo == null) {
+        if (serviceInfo == null || serviceInfo.getIsDeleted().equals(IsDeleteEnum.Y.getKey())) {
             throw new CommonException(CommonErrorCode.NOT_EXISTS,
                     "找不到服务端【" + serviceInfo.getName() + "】");
         } else if (serviceInfo.getUserId() != userId) {

+ 7 - 0
diagbotman-service/src/main/java/com/diagbot/mapper/ProductOrderMapper.java

@@ -50,6 +50,13 @@ public interface ProductOrderMapper extends BaseMapper<ProductOrder> {
      */
     List<AuthDetailDTO> getOrderDetailsByNums(List<String> nums);
     
+    /**
+     * 根据用户id查询详情集合
+     * @param userId
+     * @return
+     */
+    List<AuthDetailDTO> getOrderDetailsByUserId(Long userId);
+    
     /**
      * 根据用户id查询审核不通过订单信息数量
      * @param userId

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

@@ -26,6 +26,19 @@ public interface ServiceTokenMapper extends BaseMapper<ServiceToken> {
      */
     public List<ServiceTokenWithUser> getByAppkeyAndSecret(Map map);
 
+    /**
+     * 根据userId和productId获取试用商品的数量
+     * @param map
+     * @return
+     */
+    Integer getTryTokenCount(Map map);
+    
+    /**
+     * 根据userId和productId获取试用商品token
+     * @param map
+     * @return
+     */
+    ServiceToken getTryTokenByUserIdAndProductId(Map map);
 
     /**
      * 根据appkey、secret、productId获取ServiceToken信息

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

@@ -51,4 +51,18 @@ public interface ServiceTokenService extends IService<ServiceToken> {
      * @return
      */
     public List<ServiceTokenWrapper> getByAppkeyAndSecretAndProductId(Map map);
+
+    /**
+     * 根据userId和productId获取试用商品的数量
+     * @param map
+     * @return
+     */
+    Integer getTryTokenCount(Map map);
+    
+    /**
+     * 根据userId和productId获取试用商品token
+     * @param map
+     * @return
+     */
+    ServiceToken getTryTokenByUserIdAndProductId(Map map);
 }

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

@@ -56,4 +56,27 @@ public class ServiceTokenServiceImpl extends ServiceImpl<ServiceTokenMapper, Ser
     public List<ServiceTokenWrapper> getByAppkeyAndSecretAndProductId(Map map) {
         return baseMapper.getByAppkeyAndSecretAndProduct(map);
     }
+
+
+    /**
+     * 根据userId和productId获取试用商品的数量
+     * @param map
+     * @return
+     */
+    @Override
+    public Integer getTryTokenCount(Map map){
+        return baseMapper.getTryTokenCount(map);
+    }
+
+    /**
+     * 根据userId和productId获取试用商品token
+     */
+	@Override
+	public ServiceToken getTryTokenByUserIdAndProductId(Map map) {
+		// TODO Auto-generated method stub
+		return baseMapper.getTryTokenByUserIdAndProductId(map);
+	}
+    
+    
+
 }

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

@@ -61,7 +61,7 @@ public class ProductOrderController {
     @ApiOperation(value = "控制台-产品认证进度[by:rengb]", notes = "控制台-产品认证进度")
     @PostMapping("/productAuthProgress")
     @SysLogger("productAuthProgress")
-    public RespDTO<List<ProductAuthProgressDTO>> productAuthProgress() {
+    public RespDTO<ProductAuthProgressDTO> productAuthProgress() {
         return RespDTO.onSuc(productOrderFacade.productAuthProgress());
     }
 

+ 16 - 0
diagbotman-service/src/main/resources/mapper/ProductOrderMapper.xml

@@ -68,6 +68,22 @@
         <foreach collection="list" separator="," open="(" close=")" item="num">
             #{num}
         </foreach>
+        order by b.audit_status desc,b.gmt_modified desc,b.gmt_create desc
+    </select>
+    
+   	<select id="getOrderDetailsByUserId" parameterType="Long" 
+   			resultType="com.diagbot.dto.AuthDetailDTO">
+    	select
+        b.order_num as num,
+        b.audit_status as auditStatus,
+        c.name as name,
+		b.reject_type as rejectType,
+        b.reject_reason as rejectReason
+		from diag_product_order a
+		join diag_order_details b on a.num=b.order_num
+		join diag_lantone_product c on b.product_id=c.id
+		where a.is_deleted = 'N' and b.is_deleted = 'N' and c.is_deleted = 'N' and a.user_id=#{userId}
+		order by b.audit_status desc,b.gmt_modified desc,b.gmt_create desc
     </select>
     
     <select id="getOrderAuthFailCount" parameterType="Long" resultType="int">

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

@@ -29,6 +29,23 @@
         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>
 
+    <select id="getTryTokenCount" parameterType="java.util.Map" resultType="Integer">
+        SELECT COUNT(a.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.product_service_id = b.id and b.service_id = c.id and a.type = 3
+        and c.user_id = #{userId} and b.product_id = #{productId}
+    </select>
+    
+ 	<select id="getTryTokenByUserIdAndProductId" parameterType="java.util.Map" resultMap="BaseResultMap">
+        SELECT  
+        	a.*
+        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.product_service_id = b.id and b.service_id = c.id and a.type = 3
+        and c.user_id = #{userId} and b.product_id = #{productId}
+    </select>
+
+	
 
     <select id="getByAppkeyAndSecretAndProduct" parameterType="java.util.Map" resultType="com.diagbot.entity.wrapper.ServiceTokenWrapper">
         SELECT

+ 3 - 3
user-service/src/main/java/com/diagbot/enums/AccdenEnum.java

@@ -13,9 +13,9 @@ import lombok.Setter;
 
 public enum AccdenEnum  implements KeyedNamed{
 	   
-    AccountNotPerfect(1, "账号信息不完善"),
-    AgencyWrong(2, "机构有误"),
-    CancelPurchase(3,"取消购买");
+    AccountNotPerfect(1, "账号信息有误"),
+    AgencyWrong(2, "机构信息有误"),
+    CancelPurchase(3,"该机构已有违规操作");
 
 	    @Setter
 	    private Integer key;