HttpHelper.java 16.1 KB
package com.ectrip.trips.net;

import java.util.HashMap;
import java.util.List;

import android.content.Context;
import android.text.TextUtils;
import android.widget.Toast;

import com.ectrip.cyt.base.DataTrans;
import com.ectrip.cyt.callback.HttpCallback;
import com.ectrip.cyt.config.DevicTool;
import com.ectrip.cyt.config.MyApp;
import com.ectrip.cyt.constant.LogoType;
import com.ectrip.cyt.constant.constant;
import com.ectrip.cyt.request.ConsumeOrderRequest;
import com.ectrip.cyt.request.DetectVersionRequest;
import com.ectrip.cyt.request.LoginRequest;
import com.ectrip.cyt.request.ProductOfConsumeOrder;
import com.ectrip.cyt.request.QueryConsumedDetailRequest;
import com.ectrip.cyt.request.QueryOrderRequest;
import com.ectrip.cyt.request.ReprintVoucherRequest;
import com.ectrip.cyt.request.StatisticOrderRequest;
import com.ectrip.cyt.ui.BaseActivity;
import com.ectrip.cyt.utils.LogUtil;
import com.ectrip.cyt.utils.SharedPreferences2Obj;

/**
 * @author jigo 网络访问工具类
 */
public class HttpHelper extends HttpHelperCore {
    public static final String TAG="HttpHelper";
    private Context mContext;
    public static HttpHelper helper = null;

    private String devType = "MDEV"; // 移动终端:MDEV 售票窗口:WDEV
    private static Boolean testMOdel = null;
    private Integer type;
    private static BaseActivity activity;
    // public static final String action="/service/terminal-2.action";
    public final String action = "/service/terminal-3.do";


    public static HttpHelper getInstance(Context mContext) {
        if (helper == null) {
            helper = new HttpHelper(mContext);
        }
        activity = (BaseActivity) mContext;
        return helper;
    }

    private HttpHelper(Context mContext) {
        this.mContext = mContext;
        testMOdel = SharedPreferences2Obj.getInstance(mContext)
                .setName("config").getObject("testMOdel", Boolean.class);
        type = SharedPreferences2Obj.getInstance(mContext)
                .setName("MachineType").getObject("type", Integer.class);
    }

    /**
     * 获取终端获取订单信息
     *
     * @param method 验证码: CODE 手机号码: PHONE 证件号码: ID 订单号码: ORDER
     * @param code
     */
    QueryOrderRequest orderRequest;

    public void queryOrder(String method, String code, String phone,
                           String credentials, String orderId, String startDate,
                           String endDate, String pageSize, String count, HttpCallback<DataTrans> httpCallback) {
        if (!TextUtils.isEmpty(orderId) && (orderId.startsWith("TY_") || (orderId.startsWith("PMS_")))) {
            String voucher = orderId;
            orderRequest = new QueryOrderRequest(method, code,
                    phone, credentials, "", startDate, endDate, pageSize, count, voucher);
        } else {
            orderRequest = new QueryOrderRequest(method, code,
                    phone, credentials, orderId, startDate, endDate, pageSize, count, "");
        }
        orderRequest.setVer(MyApp.getInstance().getVer());
        orderRequest.setVerType(MyApp.getInstance().getVerType());
        orderRequest.setDevId(DevicTool.getInstance().getDevId());
        orderRequest.setDevType(devType);
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("method", "queryOrder");
        String requestParam = DataTool.envelopeData(orderRequest, MyApp
                .getInstance().getSignkey(), MyApp.getInstance().getIdentity());
        map.put("requestParam", requestParam);
        LogUtil.i(TAG,requestParam + "requestParam");
        executeHttpPost(
                "http://" + MyApp.getInstance().getServiceIp() + action, "",
                map, httpCallback, "data", DataTrans.class);
        LogUtil.i(TAG,"url = " + "http://" + MyApp.getInstance().getServiceIp() + action);
        if (testMOdel != null && testMOdel) { // 这个是调试弹框
            if (type == null) {
                return;
            }
            if (activity == null) {
                return;
            }
            activity.MToast(mContext, "服务地址:"
                    + MyApp.getInstance().getServiceIp() + ";" + "机器码:"
                    + DevicTool.getInstance().getDevId() + ";" + credentials + ";"
                    + phone + ";", Toast.LENGTH_LONG);
        }
    }

    /**
     * @param orderId        订单 ID
     * @param count          消费数量
     * @param password       订单密码
     * @param verifyPassword 是否验证密码 是: TRUE 否: FALSE
     * @param httpCallback   回调
     */
    public void consumeOrder(String orderId, String count, String password,
                             String verifyPassword, String consumedSeq, List<ProductOfConsumeOrder> products, HttpCallback<DataTrans> httpCallback) {
        Long accountId = MyApp.getInstance().getAccountId();
        ConsumeOrderRequest consumeCount = new ConsumeOrderRequest(orderId,
                count, password, verifyPassword, consumedSeq, products);
        consumeCount.setVer(MyApp.getInstance().getVer());
        consumeCount.setVerType(MyApp.getInstance().getVerType());
        consumeCount.setDevId(DevicTool.getInstance().getDevId());
        consumeCount.setAccountId(accountId);
        consumeCount.setDevType(devType);

        HashMap<String, String> map = new HashMap<String, String>();
        map.put("method", "consumeOrder");
        String requestParam = DataTool.envelopeData(consumeCount, MyApp
                .getInstance().getSignkey(), MyApp.getInstance().getIdentity());
        map.put("requestParam", requestParam);
        LogUtil.i(TAG,"requestParam" + requestParam);
        executeHttpPost(
                "http://" + MyApp.getInstance().getServiceIp() + action, "",
                map, httpCallback, "data", DataTrans.class);

        if (testMOdel != null && testMOdel) { // 这个是调试弹框
            if (type == null) {
                return;
            }
            if (activity == null) {
                return;
            }
            activity.MToast(mContext, "服务地址:"
                    + MyApp.getInstance().getServiceIp() + ";" + "机器码:"
                    + DevicTool.getInstance().getDevId() + ";" + "订单号:" + orderId
                    + ";", Toast.LENGTH_LONG);
        }
    }

    public void consumeOrderPart(String orderId, String count, String password,
                                 String verifyPassword, String consumedSeq, List<ProductOfConsumeOrder> products, String id, boolean isId, HttpCallback<DataTrans> httpCallback) {
        Long accountId = MyApp.getInstance().getAccountId();
        ConsumeOrderRequest consumeCount = new ConsumeOrderRequest(orderId,
                count, password, verifyPassword, consumedSeq, products);
        consumeCount.setVer(MyApp.getInstance().getVer());
        consumeCount.setVerType(MyApp.getInstance().getVerType());
        consumeCount.setDevId(DevicTool.getInstance().getDevId());
        consumeCount.setAccountId(accountId);
        consumeCount.setDevType(devType);
        if (isId) {
            consumeCount.setCredentials(id);
        } else {
            consumeCount.setVoucher(id);
        }

        HashMap<String, String> map = new HashMap<String, String>();
        map.put("method", "consumeOrder");
        String requestParam = DataTool.envelopeData(consumeCount, MyApp
                .getInstance().getSignkey(), MyApp.getInstance().getIdentity());
        map.put("requestParam", requestParam);
        LogUtil.i(TAG,"requestParam" + requestParam);
        executeHttpPost(
                "http://" + MyApp.getInstance().getServiceIp() + action, "",
                map, httpCallback, "data", DataTrans.class);

        if (testMOdel != null && testMOdel) { // 这个是调试弹框
            if (type == null) {
                return;
            }
            if (activity == null) {
                return;
            }
            activity.MToast(mContext, "服务地址:"
                    + MyApp.getInstance().getServiceIp() + ";" + "机器码:"
                    + DevicTool.getInstance().getDevId() + ";" + "订单号:" + orderId
                    + ";", Toast.LENGTH_LONG);
        }
    }

    /**
     * @param startdate
     * @param enddate
     * @param month
     * @param httpCallback
     * @param method       DAY MON 统计订单
     */
    public void statisticsOrder(String method, String startdate,
                                String enddate, String month, HttpCallback<DataTrans> httpCallback) {
        StatisticOrderRequest consumeCount = new StatisticOrderRequest(method,
                startdate, enddate, month);
        consumeCount.setVer(MyApp.getInstance().getVer());
        consumeCount.setVerType(MyApp.getInstance().getVerType());
        consumeCount.setDevId(DevicTool.getInstance().getDevId());
        consumeCount.setDevType(devType);
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("method", "consumeSummary");
        String requestParam = DataTool.envelopeData(consumeCount, MyApp
                .getInstance().getSignkey(), MyApp.getInstance().getIdentity());
        map.put("requestParam", requestParam);
        LogUtil.i(TAG,"requestParam" + requestParam);
        executeHttpPost(
                "http://" + MyApp.getInstance().getServiceIp() + action, "",
                map, httpCallback, "data", DataTrans.class);
        if (testMOdel != null && testMOdel) { // 这个是调试弹框
            if (type == null) {
                return;
            }
            if (activity == null) {
                return;
            }
            activity.MToast(mContext, "服务地址:"
                            + MyApp.getInstance().getServiceIp() + ";" + "机器码:"
                            + DevicTool.getInstance().getDevId() + ";" + "开始时间:"
                            + startdate + ";" + "结束:" + enddate + ";" + "月份:" + month,
                    Toast.LENGTH_LONG);
        }
    }

    /**
     * @param orderId      订单号
     * @param httpCallback 不打小票列表
     */
    public void queryConsumedDetail(String orderId,
                                    HttpCallback<DataTrans> httpCallback) {
        QueryConsumedDetailRequest reprintVoucherRequest = new QueryConsumedDetailRequest();
        reprintVoucherRequest.setOrderId(orderId);
        reprintVoucherRequest.setVer(MyApp.getInstance().getVer());
        reprintVoucherRequest.setVerType(MyApp.getInstance().getVerType());
        reprintVoucherRequest.setDevId(DevicTool.getInstance().getDevId());
        reprintVoucherRequest.setDevType(devType);
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("method", "consumeHistoryQuery");
        String requestParam = DataTool.envelopeData(reprintVoucherRequest,
                MyApp.getInstance().getSignkey(), MyApp.getInstance()
                        .getIdentity());
        map.put("requestParam", requestParam);
        LogUtil.i(TAG,"requestParam" + requestParam);
        executeHttpPost(
                "http://" + MyApp.getInstance().getServiceIp() + action, "",
                map, httpCallback, "data", DataTrans.class);
        if (testMOdel != null && testMOdel) { // 这个是调试弹框
            if (type == null) {
                return;
            }
            if (activity == null) {
                return;
            }
            activity.MToast(mContext, "服务地址:"
                            + MyApp.getInstance().getServiceIp() + ";" + "机器码:"
                            + DevicTool.getInstance().getDevId() + ";" + "补打订单:" + orderId,
                    Toast.LENGTH_LONG);
        }
    }

    /**
     * @param orderId      订单号
     * @param httpCallback 补打小票信息
     */
    public void reprintVoucher(String orderId, List<String> orderDetailIds,
                               HttpCallback<DataTrans> httpCallback) {
        ReprintVoucherRequest reprintVoucherRequest = new ReprintVoucherRequest();
        reprintVoucherRequest.setOrderId(orderId);
        StringBuffer buffer = new StringBuffer();
        for (int i = 0; i < orderDetailIds.size(); i++) {
            if (i != orderDetailIds.size() - 1) {
                buffer.append(orderDetailIds.get(i) + ",");
            } else {
                buffer.append(orderDetailIds.get(i));
            }
        }
        reprintVoucherRequest.setOrderDetailIds(buffer.toString());
        reprintVoucherRequest.setVer(MyApp.getInstance().getVer());
        reprintVoucherRequest.setVerType(MyApp.getInstance().getVerType());
        reprintVoucherRequest.setDevId(DevicTool.getInstance().getDevId());
        reprintVoucherRequest.setDevType(devType);
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("method", "reprintVoucher");
        String requestParam = DataTool.envelopeData(reprintVoucherRequest,
                MyApp.getInstance().getSignkey(), MyApp.getInstance()
                        .getIdentity());
        map.put("requestParam", requestParam);
        LogUtil.i(TAG,"requestParam" + requestParam);
        executeHttpPost(
                "http://" + MyApp.getInstance().getServiceIp() + action, "",
                map, httpCallback, "data", DataTrans.class);
        if (testMOdel != null && testMOdel) { // 这个是调试弹框
            if (type == null) {
                return;
            }
            if (activity == null) {
                return;
            }
            activity.MToast(mContext, "服务地址:"
                            + MyApp.getInstance().getServiceIp() + ";" + "机器码:"
                            + DevicTool.getInstance().getDevId() + ";" + "补打订单:" + orderId,
                    Toast.LENGTH_LONG);
        }
    }

    /**
     * 在线升级
     *
     * @param curVersionName
     * @param signkey        标识
     * @param identity       编码
     * @param url            ip或者域名
     */
    public void versionUpdate(String curVersionName, String signkey,
                              String identity, String url, HttpCallback<DataTrans> httpCallback) {
        DetectVersionRequest detectVersionRequest = new DetectVersionRequest();
        detectVersionRequest.setDevId(DevicTool.getInstance().getDevId());
        detectVersionRequest.setDevType("MDEV");
        detectVersionRequest.setVer(curVersionName);
        if (constant.logoMark == LogoType.CYT.getValue() || constant.logoMark == LogoType.EMC.getValue()) {
            detectVersionRequest.setVerType("CT");
        } else if (constant.logoMark == LogoType.QNE.getValue()) {
            detectVersionRequest.setVerType("QT");
        }
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("method", "detectVersion");
        String requestParam = DataTool.envelopeData(detectVersionRequest,
                signkey, identity);
        map.put("requestParam", requestParam);
        LogUtil.i(TAG,"requestParam" + requestParam);
        executeHttpPost("http://" + url + action, "", map, httpCallback,
                "data", DataTrans.class);
    }


    /**
     * 操作员登录
     *
     * @param username
     * @param password
     * @param httpCallback
     */
    public void login(String username, String password, HttpCallback<DataTrans> httpCallback) {
        LoginRequest loginRequest = new LoginRequest();
        loginRequest.setAccountName(username);
        loginRequest.setPassword(password);
        loginRequest.setVer(MyApp.getInstance().getVer());
        loginRequest.setVerType(MyApp.getInstance().getVerType());
        loginRequest.setDevId(DevicTool.getInstance().getDevId());
        loginRequest.setDevType(devType);

        HashMap<String, String> map = new HashMap<String, String>();
        map.put("method", "login");
        String requestParam = DataTool.envelopeData(loginRequest,
                MyApp.getInstance().getSignkey(), MyApp.getInstance()
                        .getIdentity());
        map.put("requestParam", requestParam);
        LogUtil.i(TAG,"requestParam" + requestParam);
        executeHttpPost(
                "http://" + MyApp.getInstance().getServiceIp() + action, "",
                map, httpCallback, "data", DataTrans.class);


    }
}