| package com.doumee.service.business.impl.hksync; | 
|   | 
| import com.alibaba.fastjson.JSONObject; | 
| import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
| import com.doumee.biz.system.SystemDictDataBiz; | 
| import com.doumee.core.constants.ResponseStatus; | 
| import com.doumee.core.exception.BusinessException; | 
| import com.doumee.core.haikang.model.HKConstants; | 
| import com.doumee.core.haikang.model.param.BaseListPageResponse; | 
| import com.doumee.core.haikang.model.param.BaseResponse; | 
| import com.doumee.core.haikang.model.param.request.*; | 
| import com.doumee.core.haikang.model.param.respose.*; | 
| import com.doumee.core.haikang.service.HKService; | 
| import com.doumee.core.utils.Constants; | 
| import com.doumee.core.utils.DateUtil; | 
| import com.doumee.dao.business.DeviceMapper; | 
| import com.doumee.dao.business.model.Device; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.data.redis.core.RedisTemplate; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import java.net.URLEncoder; | 
| import java.util.ArrayList; | 
| import java.util.Date; | 
| import java.util.List; | 
| import java.util.concurrent.TimeUnit; | 
|   | 
| /** | 
|  * 设备信息表Service实现 | 
|  * @author 江蹄蹄 | 
|  * @date 2023/11/30 15:33 | 
|  */ | 
| @Service | 
| public class HkSyncLoginAuthServiceImpl extends HkSyncBaseServiceImpl { | 
|   | 
|     @Autowired | 
|     private DeviceMapper deviceMapper; | 
|   | 
|     @Autowired | 
|     private RedisTemplate<String, Object> redisTemplate; | 
|     @Autowired | 
|     private SystemDictDataBiz systemDictDataBiz; | 
|   | 
|     /** | 
|      * 同步海康门禁设备数据 | 
|      * @param param | 
|      * @return | 
|      */ | 
|     @Override | 
|     public   String getServiceUrl(HKGetServiceLoginUrlRequest param){ | 
|         if(StringUtils.isBlank(param.getLabel())||StringUtils.isBlank(param.getUsername())){ | 
|             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,登录组件失败,请稍后重试!"); | 
|         } | 
|         //优先从缓存取数据,如果有缓存,直接返回缓存地址 | 
|         /*String cacheUrl = (String) redisTemplate.opsForValue().get(Constants.REDIS_HK_TOKEN_KEY+param.getUsername()+param.getLabel()); | 
|         if(StringUtils.isNotBlank(cacheUrl)){ | 
|             return cacheUrl; | 
|         }*/ | 
|         String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,param.getLabel()).getCode(); | 
|         if(StringUtils.isBlank(url)){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
|         } | 
|         ApplyCTGTRequest ctgtParam = new ApplyCTGTRequest(); | 
|         ctgtParam.setLanguage("zh_CN"); | 
|         ctgtParam.setUserCode(param.getUsername()); | 
|         ctgtParam.setLoginType("2"); | 
|         BaseResponse<ApplyCTGTResponse> response = HKService.applyCTGT(ctgtParam); | 
|         if(response !=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) &&response.getData()!=null &&StringUtils.isNotBlank(response.getData().getCTGT())){ | 
|             //处理新增成功的数据,修改海康同步状态 | 
|             String ctgt = response.getData().getCTGT(); | 
|             ApplySTequest stParam = new ApplySTequest(); | 
|             stParam.setCtgt(ctgt); | 
|             stParam.setService(url); | 
|             BaseResponse<ApplySTResponse> result = HKService.applyST(stParam); | 
|             if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) | 
|                     &&result.getData()!=null &&StringUtils.isNotBlank(result.getData().getST())){ | 
|                 //处理新增成功的数据,修改海康同步状态 | 
|                 String st = result.getData().getST(); | 
|                 try { | 
|                     String serviceUrl =   systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_NGINX_URL).getCode() | 
|                             +(HKConstants.InterfacePath.tokenLoginUrl.replace("${st}", st).replace("${service}", URLEncoder.encode(url, "UTF-8"))); | 
| //                    redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+param.getUsername()+param.getLabel(),serviceUrl,1, TimeUnit.HOURS); | 
|                     return serviceUrl; | 
|                 }catch (Exception e){ | 
|                     throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,登录组件失败,请稍后重试!"); | 
|                 } | 
|                 | 
|             }else{ | 
|                 throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,登录组件失败,请稍后重试!"); | 
|             } | 
|         }else{ | 
|             throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,登录组件失败,请稍后重试!"); | 
|         } | 
|     } | 
| } |