//package com.gree.mall.miniapp.logic.order;
//
//import com.alibaba.fastjson.JSONObject;
//import org.apache.commons.lang3.StringUtils;
//import com.gree.mall.miniapp.bean.gree.WorkOrderBean;
//import com.gree.mall.miniapp.constant.Constant;
//import com.gree.mall.miniapp.exception.RemoteServiceException;
//import com.gree.mall.miniapp.plus.entity.OrderDetail;
//import com.gree.mall.miniapp.plus.entity.OrderInfo;
//import com.gree.mall.miniapp.plus.service.OrderDetailService;
//import com.gree.mall.miniapp.plus.service.OrderInfoService;
//import com.gree.mall.miniapp.utils.*;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.codec.digest.DigestUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//
//import java.math.BigDecimal;
//import java.util.*;
//
///**
// * 对接总部接口
// */
//@Slf4j
//@Service
//public class GreeLogic {
//
//
//    private static final String appId = "GglcSDasaleWitelsgy123mxidk";
//    private static final String secret = "sfgasfdowjefoiw571jfgglsaledvowndowjfeowjemmlwguangijetyebnfsscfhb";
//    private static final String key = "yedglste489gasdif6eikiguangfidfssfsfdweyeemmf35rwfwfw234sdfwfssc";
//
//    @Value("${gree.url.token}")
//    private String greeUrlToken;
//    @Value("${gree.url.fxInstallReq}")
//    private String fxInstallReq;
//    @Autowired
//    RedisUtil redisUtil;
//    @Autowired
//    OrderInfoService orderInfoService;
//    @Autowired
//    OrderDetailService orderDetailService;
//
//
//    /**
//     * 获取token
//     */
//    public String getToken() throws RemoteServiceException {
//        String redisKey = Constant.RedisPrefix.TOKEN_GREE;
//        String token = (String)redisUtil.get(redisKey);
//        if(StringUtils.isNotBlank(token)){
//            return token;
//        }
//        String url = this.greeUrlToken + "?appid=" + appId + "&secret=" + secret;
//        String s = HttpUtils.requestGet(url, null, null);
//        log.info("【获取总部工单对接token】:{}",url+"||response:"+s);
//        String access_token = (String)JSONObject.parseObject(s).get("access_token");
//        redisUtil.set(redisKey,access_token,2*60*60);
//        return access_token;
//    }
//
//
//    /**
//     * 下工单
//     */
//    public void postWorkOrder(String orderId) throws RemoteServiceException {
//        OrderInfo orderInfo = orderInfoService.getById(orderId);
//        List<OrderDetail> list = orderDetailService.lambdaQuery().eq(OrderDetail::getOrderId, orderId).list();
//
//        WorkOrderBean workOrderBean = new WorkOrderBean();
//        workOrderBean.setFx_sale_order_no(orderInfo.getOrderId());
//        workOrderBean.setUser_name(orderInfo.getReceUserName());
//        workOrderBean.setUser_phone(orderInfo.getRecePhone());
//        workOrderBean.setProvince(orderInfo.getProvince());
//        workOrderBean.setCity(orderInfo.getCity());
//        workOrderBean.setArea(orderInfo.getArea());
//        workOrderBean.setStreet(StringUtils.isBlank(orderInfo.getStreet())?"0":orderInfo.getStreet());
//        workOrderBean.setAddress(orderInfo.getReceAddress());
//        workOrderBean.setUser_contact(orderInfo.getReceUserName());
//        workOrderBean.setPayment_time(DateUtils.formatDate(orderInfo.getPayTime()));
//        workOrderBean.setClerk_id("0");
//        workOrderBean.setClerk_name(orderInfo.getWorkerName());
//        workOrderBean.setClerk_phone(orderInfo.getWorkerPhone());
//        workOrderBean.setWebsit_number(orderInfo.getWebsitNumber());
//
//        List<Map<String,Object>> datas = new ArrayList<>();
//        for(OrderDetail orderDetail : list){
//            Map<String,Object> map = new HashMap<>();
//            map.put("unit","个");
//            map.put("number",orderDetail.getNum());
//            map.put("price",orderDetail.getPayAmount());
//            map.put("small_id",0);
//            map.put("small_name","0");
//            map.put("series_name","0");
//            map.put("pname",orderDetail.getGoodsName());
//            datas.add(map);
//        }
//        workOrderBean.setItf_fx_install_req_data(datas);
//        HashMap<String, String> map = Utils.objectToStringMap(workOrderBean);
//        map.put("appId",appId);
//        map.put("secret",secret);
//        map.put("access_token", getToken());
//        //排序
//        String linkStr = createLinkString(map, false, key);
//        //签名
//        String sign = DigestUtils.md5Hex(linkStr).toUpperCase();
//        map.put("sign", sign);
//
//        log.info("下单request:{},param:{}",fxInstallReq,JSONObject.toJSONString(map));
//        //发送请求
//        String respBody = HttpUtils.requestPostForm(fxInstallReq, map, new HashMap<>());
//        log.info("下单response:{}",respBody);
//    }
//
//
//    private static String md5Sign(Map<String, Object> map, String key) {
//        String result = toParam(map);
//        result += "&key=" + key;
//        result = MD5.md5(result).toUpperCase();
//        return result;
//    }
//
//
//    private static String toParam(Map<String, Object> map){
//        ArrayList<String> list = new ArrayList<String>();
//        for (Map.Entry<String, Object> entry : map.entrySet()) {
//            if (entry.getValue() != "") {
//                list.add(entry.getKey() + "=" + entry.getValue());
//            }
//        }
//        int size = list.size();
//        String[] arrayToSort = list.toArray(new String[size]);
//        Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER);
//
//        String result = join(arrayToSort, "&");
//        return result;
//    }
//
//    private static String join(String[] values, String delimeter) {
//        StringBuffer sb = new StringBuffer();
//        for (String value : values) {
//            if (sb.length() > 0) {
//                sb.append(delimeter);
//            }
//            sb.append(value);
//        }
//        return sb.toString();
//    }
//
//    /**
//     * 把数组所有元素排序，并按照“参数=参数值”的模式用“&”字符拼接成字符串
//     *
//     * @param params 需要排序并参与字符拼接的参数组
//     * @param emptyPass 参数内容为空是否参与
//     * @param secretKey
//     * @return 拼接后字符串
//     */
//    private String createLinkString(Map<String, String> params, boolean emptyPass, String secretKey) {
//        List<String> keys = new ArrayList<String>(params.keySet());
//        Collections.sort(keys);
//        String preStr = "";
//        for (int i = 0; i<keys.size(); i++) {
//            String key = keys.get(i);
//            String value = params.get(key);
//
//            if(!emptyPass){
//                if(value == null || value.length() == 0){
//                    continue;
//                }
//            }
//            preStr = preStr + key + "=" + value + "&";
//        }
//        preStr = preStr + "key=" + secretKey;
//
//        return preStr;
//    }
//
//}
