/** * 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); } }
/** * 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) {
/** * 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; }