コード例 #1
0
ファイル: transOpenApi.model.php プロジェクト: ohjack/newErp
 /**
  * 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);
     }
 }
コード例 #2
0
ファイル: trackNumber.action.php プロジェクト: ohjack/newErp
 /**
  * TrackNumberAct::act_updateTrackNumber()
  * 修改跟踪号
  * @param string $trackNumber 跟踪号
  * @param string $country 跟踪号所属国家(如果有)
  * @param string $carrierId 运输方式ID
  * @return  bool
  */
 public function act_updateTrackNumber()
 {
     $id = isset($_POST["id"]) ? abs(intval(trim($_POST["id"]))) : 0;
     $trackNumber = isset($_POST["trackNumber"]) ? post_check($_POST["trackNumber"]) : "";
     $country = isset($_POST["country"]) ? post_check($_POST["country"]) : "";
     $carrierId = isset($_POST["carrierId"]) ? abs(intval(trim($_POST["carrierId"]))) : 0;
     $channelId = isset($_POST["channelId"]) ? abs(intval(trim($_POST["channelId"]))) : 0;
     $act = isset($_REQUEST["act"]) ? post_check($_REQUEST["act"]) : "";
     $mod = isset($_REQUEST["mod"]) ? post_check($_REQUEST["mod"]) : "";
     if (!AuthUser::checkLogin($mod, $act)) {
         self::$errCode = 10010;
         self::$errMsg = "对不起,您无数据编辑权限!";
         return false;
     }
     if (empty($id) || !is_numeric($id)) {
         self::$errCode = 10000;
         self::$errMsg = "ID有误!";
         return false;
     }
     if (empty($carrierId)) {
         self::$errCode = 10001;
         self::$errMsg = "运输方式有误!";
         return false;
     }
     if (empty($trackNumber)) {
         self::$errCode = 10002;
         self::$errMsg = "跟踪号有误!";
         return false;
     }
     if (!preg_match("/^[A-Z0-9]{1,30}\$/", $trackNumber)) {
         self::$errCode = 10003;
         self::$errMsg = "跟踪号内容:{$trackNumber}格式错误,跟踪号内容只能由大写字母和数字组成且长度不超过30,请修改过来!";
         return false;
     }
     $uid = $_SESSION[C('USER_AUTH_SYS_ID')];
     $data = array("trackNumber" => $trackNumber, "countrys" => $country, "carrierId" => $carrierId, "channelId" => $channelId, "editTime" => time(), "edit_user_id" => $uid);
     $res = TrackNumberModel::updateTrackNumber($id, $data);
     self::$errCode = TrackNumberModel::$errCode;
     self::$errMsg = TrackNumberModel::$errMsg;
     return $res;
 }