Beispiel #1
0
 /**
  * TransOpenApiModel::assignTrackNumbers()
  * 分配跟踪号
  * @param int $carrierId 运输方式ID
  * @param int $orderId 订单编号ID
  * @param int $channelId 渠道ID(可选)
  * @param string $country 所属国家(可选)
  * @return  array 
  */
 public static function assignTrackNumbers($carrierId, $orderId, $country = '', $channelId = 0)
 {
     self::initDB();
     $where = '';
     if (empty($country)) {
         $where = "carrierId = '{$carrierId}' AND orderId = '{$orderId}' AND (countrys = '' OR countrys IS NULL)";
     } else {
         $where = "carrierId = '{$carrierId}' AND orderId = '{$orderId}' AND countrys = '{$country}'";
     }
     //已经分配的订单跟踪号再次分配时直接返回原来的跟踪号
     $res = TrackNumberModel::assignTrackNumber($where);
     if (!empty($res['trackNumber'])) {
         return array("trackNumber" => $res['trackNumber']);
     }
     //兼容渠道
     if (empty($channelId) && $carrierId != 2) {
         $where = '';
     } else {
         $where = " AND channelId = '{$channelId}'";
     }
     //新订单跟踪号分配
     if (empty($country)) {
         $where = "carrierId = '{$carrierId}' AND orderId = 0 AND is_lock = 0 AND (countrys = '' OR countrys IS NULL)" . $where;
     } else {
         $where = "carrierId = '{$carrierId}' AND orderId = 0 AND is_lock = 0 AND countrys = '{$country}'" . $where;
     }
     $res = TrackNumberModel::assignTrackNumber($where);
     if (empty($res['trackNumber'])) {
         self::$errCode = 10001;
         self::$errMsg = "当前运输方式已无跟踪号可以分配";
         return false;
     }
     $tracknum = $res['trackNumber'];
     $id = $res['id'];
     //增加锁机制防止并发异常
     $res = TrackNumberModel::updateTrackNumber($id, array("is_lock" => 1), true);
     if (!$res) {
         self::$errCode = 10002;
         self::$errMsg = "订单ID{$orderId}=锁定{$id}=跟踪号:{$tracknum}失败,请不要过度频繁申请跟踪号!";
         return false;
     }
     //更新分配的跟踪号信息
     $data = array("orderId" => $orderId, "assignTime" => time());
     $res = TrackNumberModel::updateTrackNumber($id, $data, true);
     if (!$res) {
         self::$errCode = TrackNumberModel::$errCode;
         self::$errMsg = TrackNumberModel::$errMsg;
         return false;
     } else {
         return array("trackNumber" => $tracknum);
     }
 }
Beispiel #2
0
 /**
  * TrackNumberModel::delTrackNumber()
  * 跟踪号删除
  * @param integer $id 跟踪号ID
  * @return bool
  */
 public static function delTrackNumber($id)
 {
     self::initDB();
     $sql = "UPDATE `" . self::$prefix . self::$table . "` SET is_delete = 1 WHERE id = {$id}";
     $query = self::$dbConn->query($sql);
     if ($query) {
         $rows = self::$dbConn->affected_rows();
         if ($rows) {
             return $res;
         } else {
             self::$errCode = 10001;
             self::$errMsg = "删除数据失败";
             return false;
         }
     } else {
         self::$errCode = 10000;
         self::$errMsg = "执行SQL语句失败!";
         return false;
     }
 }
$total = TrackNumberModel::modListCount("carrierId = '{$carrierId}'");
$used = TrackNumberModel::modListCount("carrierId = '{$carrierId}' AND orderId > 0");
$last = TrackNumberModel::modListCount("carrierId = '{$carrierId}' AND orderId = 0");
$title = "【跟踪号可用数量预警】" . date('Y-m-d', time()) . " 运输方式{$res['carrierNameCn']}";
$table = '<p style="' . $css_height . '"><b>大家好:</b><br/>以下为运输方式<b>' . $res['carrierNameCn'] . '</b>跟踪号可用数量预警简报,请查阅</p>';
$table .= '<table border="1" cellpadding="0" cellspacing="0" width="791"><tr><td height="25px"><b>运输方式</b></td><td><b>跟踪号总数</b></td><td><b>已用数量</b></td><td><b>剩余数量</b></td></tr>';
$table .= '<tr><td height="20px">' . $res['carrierNameCn'] . '</td><td>' . $total . '</td><td>' . $used . '</td><td>' . $last . '</td></tr>';
$flag = false;
foreach ($chArr as $v) {
    $total_ch = TrackNumberModel::modListCount("carrierId = '{$carrierId}' AND channelId = '{$v['id']}'");
    $used_ch = TrackNumberModel::modListCount("carrierId = '{$carrierId}' AND channelId = '{$v['id']}' AND orderId > 0");
    $last_ch = TrackNumberModel::modListCount("carrierId = '{$carrierId}' AND channelId = '{$v['id']}' AND orderId = 0");
    if ($carrierId == 88) {
        $total_cur = TrackNumberModel::modListCount("carrierId = '{$carrierId}' AND countrys = 'Switzerland'");
        $used_cur = TrackNumberModel::modListCount("carrierId = '{$carrierId}' AND countrys = 'Switzerland' AND orderId > 0");
        $last_cur = TrackNumberModel::modListCount("carrierId = '{$carrierId}' AND countrys = 'Switzerland' AND orderId = 0");
        $table .= '<tr><td height="20px">' . $res['carrierNameCn'] . '->非瑞士国家</td><td>' . ($total - $total_cur) . '</td><td>' . ($used - $used_cur) . '</td><td>' . ($last - $last_cur) . '</td></tr>';
        $table .= '<tr><td height="20px">' . $res['carrierNameCn'] . '->瑞士国家</td><td>' . $total_cur . '</td><td>' . $used_cur . '</td><td>' . $last_cur . '</td></tr>';
    }
    if ($last_ch <= $warnNum) {
        $flag = true;
    }
    if ($carrierId == 2) {
        $table .= '<tr><td height="20px">' . $res['carrierNameCn'] . "->" . $v['channelName'] . '渠道</td><td>' . $total_ch . '</td><td>' . $used_ch . '</td><td>' . $last_ch . '</td></tr>';
    }
}
$table .= '</table>';
$table .= '<p style="' . $css_height . '">详情请登录:<a href="' . $system_url . '" target="_blank">' . $system_name . '</a><br/></br>' . date('Y-m-d') . '<br/>' . $system_name . '</p>';
echo $table, "\n";
//跟踪号可用数低于多少发预警邮件
if ($flag || $last <= $warnNum) {
Beispiel #4
0
 /**
  * TrackNumberAct::act_delTrackNumber()
  * 删除跟踪号
  * @param int $id 跟踪号ID
  * @return  bool
  */
 public function act_delTrackNumber()
 {
     $id = isset($_POST["id"]) ? abs(intval(trim($_POST["id"]))) : 0;
     $act = isset($_REQUEST["act"]) ? post_check($_REQUEST["act"]) : "";
     $mod = isset($_REQUEST["mod"]) ? post_check($_REQUEST["mod"]) : "";
     if (!AuthUser::checkLogin($mod, $act)) {
         self::$errCode = 10001;
         self::$errMsg = "对不起,您无数据删除权限!";
         return false;
     }
     if (empty($id) || !is_numeric($id)) {
         self::$errCode = 10000;
         self::$errMsg = "ID有误!";
         return false;
     }
     $res = TrackNumberModel::delTrackNumber($id);
     self::$errCode = TrackNumberModel::$errCode;
     self::$errMsg = TrackNumberModel::$errMsg;
     return $res;
 }