| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package com.poteviohealth.cgp.statistics.service.impl;
- import com.poteviohealth.cgp.common.facade.cache.CacheService;
- import com.poteviohealth.cgp.common.filter.TokenContext;
- import com.poteviohealth.cgp.common.integrated.OperatorIdParams;
- import com.poteviohealth.cgp.common.integrated.partner.PartnerFeignClient;
- import com.poteviohealth.cgp.common.integrated.partner.model.OperatorParamDTO;
- import com.poteviohealth.cgp.common.model.VaultsResponse;
- import com.poteviohealth.cgp.common.service.impl.BaseServiceImpl;
- import com.poteviohealth.cgp.common.utils.CgpTool;
- import com.poteviohealth.cgp.common.utils.DateUtils;
- import com.poteviohealth.cgp.common.utils.ImageUtils;
- import com.poteviohealth.cgp.statistics.mapper.DistinctionMapper;
- import com.poteviohealth.cgp.statistics.model.Distinction;
- import com.poteviohealth.cgp.statistics.model.outdto.DistinctionDTO;
- import com.poteviohealth.cgp.statistics.service.IDistinctionService;
- import lombok.extern.log4j.Log4j2;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.commons.lang3.time.DateFormatUtils;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.io.File;
- import java.io.IOException;
- import java.util.Date;
- import java.util.List;
- /**
- * 图片处理
- * @author Qin
- */
- @Service
- @Log4j2
- public class DistinctionServiceImpl extends BaseServiceImpl<DistinctionMapper, Distinction> implements IDistinctionService {
- @Resource
- private PartnerFeignClient partnerFeignClient;
- @Resource
- private CacheService cacheService;
- @Value("${sync.dbName}")
- private String dbName;
- @Override
- public DistinctionDTO checkImg(File file, Long orderId, List<String> uidList) throws IOException {
- DistinctionDTO dto = new DistinctionDTO();
- String uid = ImageUtils.readImagePix(file);
- dto.setUid(uid);
- if("0".equals(orderCacheVal(CgpTool.CACHE_ORDER_PHOTO_CHECK))){
- return dto;
- }
- Integer day = Integer.parseInt(orderCacheVal(CgpTool.CACHE_ORDER_PHOTO_DAY));
- Double threshold = Double.parseDouble(orderCacheVal(CgpTool.CACHE_ORDER_PHOTO_THRESHOLD));
- int count = ImageUtils.different(threshold);
- boolean isCheck = false;
- for (String s : uidList) {
- if(ImageUtils.similarity(s,uid)<=count){
- isCheck = true;
- break;
- }
- }
- if(isCheck){
- dto.setOrderId(orderId);
- }else{
- DistinctionDTO dis = baseMapper.checkDis(TokenContext.cureOperatorId(),dbName,uid,count, DateFormatUtils.format(DateUtils.caculDays(new Date(), -day),"yyyy-MM-dd HH:mm:ss"));
- if(dis != null){
- dto.setOrderId(dis.getOrderId());
- dto.setRurl(dis.getRurl());
- }
- }
- return dto;
- }
- private String orderCacheVal(String key){
- Integer operatorId = TokenContext.cureOperatorId();
- String val = cacheService.hget(key+":"+operatorId,operatorId.toString());
- if(StringUtils.isEmpty(val)){
- val = this.getParamValue(key);
- cacheService.hset(key+":"+operatorId,operatorId.toString(),val);
- }
- return val;
- }
- private String getParamValue(String key){
- OperatorIdParams params = new OperatorIdParams();
- params.setOperatorId(TokenContext.cureOperatorId());
- params.setCode(key);
- VaultsResponse<OperatorParamDTO> vaultsResponse = partnerFeignClient.getOperatorParamByCode(params);
- return vaultsResponse.getData().getParamValue();
- }
- }
|