<?php
/**
 * Created by JetBrains PhpStorm.
 * User: user
 * Date: 13-12-11
 * Time: 上午11:41
 * To change this template use File | Settings | File Templates.
 */
class Service_ServiceTrackingNumber
{
    /**
     * @var null
     */
    public static $_modelClass = null;

    /**
     * @return Table_CustomerAddressBook|null
     */
    public static function getModelInstance()
    {
        if (is_null(self::$_modelClass)) {
            self::$_modelClass = new Table_ServiceTrackingNumber();
        }
        return self::$_modelClass;
    }

    /**
     * @param $row
     * @return mixed
     */
    public static function add($row)
    {
        $model = self::getModelInstance();
        return $model->add($row);
    }

    /**
     * @param $row
     * @param $value
     * @param string $field
     * @return mixed
     */
    public static function update($row, $value, $field = "stn_id")
    {
        $model = self::getModelInstance();
        return $model->update($row, $value, $field);
    }

    public static function delete($value,$field = "stn_id"){
        $model = self::getModelInstance();
        return $model->delete($value,$field);
    }

    /**
     * @param $value
     * @param string $field
     * @param string $colums
     * @return mixed
     */
    public static function getByField($value, $field = 'stn_id', $colums = "*")
    {
        $model = self::getModelInstance();
        return $model->getByField($value, $field, $colums);
    }

    /**
     * @param array $condition
     * @param string $type
     * @param int $pageSize
     * @param int $page
     * @param string $order
     * @return mixed
     */
    public static function getByCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = "")
    {
        $model = self::getModelInstance();
        return $model->getByCondition($condition, $type, $pageSize, $page, $order);
    }
	public static function getByConditionLock($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = "")
    {
        $model = self::getModelInstance();
        return $model->getByConditionLock($condition, $type, $pageSize, $page, $order);
    }
    /**
     * @author william-fan
     * @todo 用于服务商单号获取
     */
    public static function getTrackingNumber($sm_code,$trackingNumber){
    	switch(strtoupper($sm_code)){
    		case "BH-MMP":
    			$trackingNumber = self::getSWPTTracking($trackingNumber);
    			break;
    		case "HQSWGH":
    			$trackingNumber = self::getSWPTTracking($trackingNumber);
    				break;
    		default:
    	}
    	return $trackingNumber;
    }
    public static function getSWPTTracking($trackingNumber) {
    	try{
    		//RE638100013SE
    		$start = substr($trackingNumber, 0,2);
    		$middleStr = substr($trackingNumber, 2,8);
    		$end = substr($trackingNumber, -2,2);
    		$endNumber = 0;
    		$endNumber = $endNumber+(int)$middleStr[0]*8;
    		$endNumber = $endNumber+(int)$middleStr[1]*6;
    		$endNumber = $endNumber+(int)$middleStr[2]*4;
    		$endNumber = $endNumber+(int)$middleStr[3]*2;
    		$endNumber = $endNumber+(int)$middleStr[4]*3;
    		$endNumber = $endNumber+(int)$middleStr[5]*5;
    		$endNumber = $endNumber+(int)$middleStr[6]*9;
    		$endNumber = $endNumber+(int)$middleStr[7]*7;
    		$endNumber = 11 - $endNumber%11;
            if($endNumber==10){
                $endNumber = 0;
            }elseif($endNumber==11){
                $endNumber = 5;
            }else{
                $endNumber = $endNumber;
            }
    		$tracking_number = $start.$middleStr.$endNumber.$end;
    		return $tracking_number;
    	}catch(Exception $e){
    		return $trackingNumber;
    	}
    }
}
