package com.doumee.service.business.impl.hksync;
|
|
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.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.dao.business.DeviceMapper;
|
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;
|
|
/**
|
* 设备信息表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[0].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(),"对不起,登录组件失败,请稍后重试!");
|
}
|
}
|
}
|