package com.nokia.domainb.capability;

import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

import java.util.Date;

/*
 * 欠费查询微服务
 * json_microservice_acting_qryowefee
 * 按用户或账户返回欠费信息，默认是查询往月欠费(不含坏账)和实时话费，可以根据查询条件返回坏账欠费。支持单用户，融合用户查询，不支持大合账用户查询
 * Get方法
 */
public class QryOweFee extends AbstractQuery {
    private static final String url = "http://192.168.70.130:8000/api/microservice/acting/qryowefee/v1";
    private static final String urlTest = "http://10.124.150.230:8000/api/microservice/acting/qryowefee/v1";

    public String query(String phoneNumber, String provinceId) {
        return query(phoneNumber, provinceId, false);
    }

    public String query(String phoneNumber, String provinceId, boolean test) {
        String realUrl = test ? urlTest : url;

        StringBuilder sb = new StringBuilder();
        sb.append("SERIAL_NUMBER=").append(phoneNumber);
        // &provinceId= 河北省为18 这里用路由查询来获取
        sb.append("&").append("provinceId=").append(provinceId);
        // &eparchyCode= 经过试验，这里需要有内容，但不需要准确
        sb.append("&").append("eparchyCode=").append("0");
        // &SERVICE_CLASS_CODE= 0050表示移网 0030表示固网
        sb.append("&").append("SERVICE_CLASS_CODE=").append("0050");
        // 查询类型(1:业务号码，2：按账户，3：按用户，4：按证件号码和服务号码)
        // &QUERY_TYPE= 这里固定为1
        sb.append("&").append("QUERY_TYPE=").append("1");
        // 查询类别（1：指定用户，2：按账户）
        // &CHARGE_TYPE=1 这里固定为1
        sb.append("&").append("CHARGE_TYPE=").append("1");
        // 呆坏账标识（0：非呆坏账、1: 坏账）
        // &BAD_DEBT_TAG= 这里使用0或1均可获得结果，后面需要找到特殊情况的号码测试一下区别，暂时先用0
        sb.append("&").append("BAD_DEBT_TAG=").append("0");

        sb.append("&").append("APP_ID=").append(appId);
        Date date = new Date();
        String timeStamp = getTimeStamp(date);
        String transId = getTransId(date);
        sb.append("&").append("TIMESTAMP=").append(timeStamp);
        sb.append("&").append("TRANS_ID=").append(transId);
        sb.append("&").append("TOKEN=").append(getToken(timeStamp, transId, test));
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> response = restTemplate.getForEntity(realUrl + "?" + sb, String.class);
        return response.getBody();
    }
}
