//package com.yx.face.service.impl;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.yx.face.boot.uitls.ForeignAesUtil;
//import com.yx.face.boot.uitls.OkHttpUtils;
//import com.yx.face.dao.SystemConfigDao;
////import com.yx.face.service.SuKangMaAipService;
//import lombok.SneakyThrows;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Service;
//import com.yx.face.boot.core.Constants;
//
//import javax.annotation.Resource;
//import java.util.ArrayList;
//import java.util.TreeMap;
//
//
///**
// * @ProjectName: airport-review-smoke
// * @Package: com.yixin.review.service.impl
// * @ClassName: SuKangMaAipServiceImpl
// * @Author: 崔哥
// * @Description: 苏康码扫码接口 SuKangMaAipServiceImpl
// * @Date: 2021/9/3 16:19
// * @Version: 1.0
// */
//@Slf4j
//@Service
//public class SuKangMaAipServiceImpl implements SuKangMaAipService {
//
//    @Resource
//    private SystemConfigDao systemConfigDao;
//
//
//    @SneakyThrows
//    @Override
//    public void getLocalSkmInfo(String name, String IdCard, String sn, Long id, String extend3) {
//        //签名秘钥
//        String superAppKey = systemConfigDao.getConfigByKeyValue(Constants.SUPER_APP_KEY);
//        //签名信息
//        String superSign = systemConfigDao.getConfigByKeyValue(Constants.SUPER_SIGN);
//        //三方接口url
//        String skmUrl = systemConfigDao.getConfigByKeyValue(Constants.SKM_API_URL);
//
//        String tbUrl = systemConfigDao.getConfigByKeyValue(Constants.TB_API_URL);
//        //去除空格
//        String xm = name.replaceAll(" ", "");
//        //日志
//        log.info("加密前; name {} , IdCard {} ", xm, IdCard);
//
//        ForeignAesUtil foreignAesUtil = new ForeignAesUtil();
//        // 加密方法
//        String encryptByHexName = foreignAesUtil.encryptByHex(xm);
//        String encryptByHexCode = foreignAesUtil.encryptByHex(IdCard);
//        log.info("加密后的内容：姓名 {}  身份证 {}", encryptByHexName, encryptByHexCode);
//        //解密
//        String decryptByHexName = foreignAesUtil.decryptByHex(encryptByHexName);
//        String decryptByHexCode = foreignAesUtil.decryptByHex(encryptByHexCode);
//        log.info("解密后的内容：姓名 {}  身份证 {}", decryptByHexName, decryptByHexCode);
//        // post请求，分为两种，一种是普通表单提交，一种是json提交
//        log.info("请求苏康码内容；cardCode {} userName{} super_app_key{} super_sign{} super_time{}", encryptByHexCode, encryptByHexName, superAppKey, superSign, System.currentTimeMillis());
//
//        TreeMap<String, String> map = new TreeMap<>();
//        map.put("super_time", String.valueOf(System.currentTimeMillis() / 1000));
//        map.put("userName", encryptByHexName);
//        map.put("cardCode", encryptByHexCode);
//        map.put("super_app_key", superAppKey);
//        String sign = foreignAesUtil.getMD5BySort(map, superSign);
//        log.info("加密后 sign {}", sign);
//        String sync = OkHttpUtils.builder().url(skmUrl)
//                // 有参数的话添加参数，可多个
//                .addParam("cardCode", encryptByHexCode)
//                .addParam("userName", encryptByHexName)
//                .addParam("super_app_key", superAppKey)
//                .addParam("super_sign", sign)
//                .addParam("super_time", String.valueOf(System.currentTimeMillis() / 1000))
//                // 也可以添加多个
////                .addHeader("Content-Type", "application/x-www-form-urlencoded")
//                // 如果是true的话，会类似于postman中post提交方式的raw，用json的方式提交，不是表单
//                // 如果是false的话传统的表单提交
//                .post(true)
//                .sync();
//        log.info("苏康码返回值；{}", sync);
//
//
////        if (StringUtils.isNotBlank(extend3)) {
////            extend3 = extend3 + "度";
////        }
//        //请求参数
//        ArrayList<String> snList = new ArrayList<String>();
//        snList.add(sn);
//        JSONObject param = new JSONObject();
//        param.put("SN", snList);
//        param.put("type", "doorControl");
//        param.put("taskId", id);
//        //Data
//        JSONObject Data = new JSONObject();
//        JSONObject jsonObject = JSON.parseObject(sync);
//        Integer code = jsonObject.getInteger("code");
//        String data = jsonObject.getString("data");
//        //下发指令开关门
//        OkHttpUtils url = OkHttpUtils.builder().url(tbUrl);
//        if (code == 200 && code != null) {
//            String decryptSync = foreignAesUtil.decryptByHex(data);
//            log.info("苏康码返回值 解密；{}", decryptSync);
//            JSONObject jsonObject1 = JSONObject.parseObject(decryptSync);
//            String levelData = jsonObject1.getString("levelData");
//            // 有参数的话添加参数，可多个
//            if ("1".equals(levelData)) {
//                Data.put("tts", extend3 + "绿码，请通行");
//                Data.put("displayType", 1);
//                Data.put("doorControl", "1,1");
//                param.put("Data", Data);
//                String paramJson = param.toJSONString();
//                String sync1 = url.localPost(paramJson)
//                        .sync();
//                log.info("开门返回；{} ", sync1);
//                log.info("paramJson；{} ", paramJson);
//            } else {
//                Data.put("tts", extend3 + "禁止通行请联系管理员");
//                Data.put("displayType", 2);
//                Data.put("doorControl", "1,0");
//                param.put("Data", Data);
//                String paramJson = param.toJSONString();
//                String sync1 = url.localPost(paramJson)
//                        .sync();
//                log.info("开门返回；{}", sync1);
//                log.info("paramJson；{} ", paramJson);
//            }
//        } else {
//            Data.put("tts", extend3 + "未获取到健康码");
//            Data.put("displayType", 0);
//            Data.put("doorControl", "1,0");
//            param.put("Data", Data);
//            String paramJson = param.toJSONString();
//            String sync1 = url.localPost(paramJson)
//                    .sync();
//            log.info("开门返回；{}", sync1);
//            log.info("paramJson；{} ", paramJson);
//        }
//
//    }
//}
