/** * 获取new_trans_result表里面状态为成功或者失败的记录 * 将取出的记录原封不动的存入new_trans_history表 * 存入成功后删除new_trans_result表里面对应的记录 * */ public function checkResultStatus() { $newTransResultModel = new NewTransResultModel(); $newTransHistoryModel = new NewTransHistoryModel(); $res = $newTransResultModel->getSuccAndFail(); if ($res) { foreach ($res as $k => $v) { $newTransHistoryModel->begin(); $v = (array) $v; $newTransHistoryModel->insert($v); $rs = $newTransHistoryModel->affectRow(); if ($rs) { $del = $newTransResultModel->delSuccAndFail($v['t_id']); if ($del) { $newTransHistoryModel->commit(); echo 't_id为' . $v['t_id'] . '的交易记录从result转存history成功' . PHP_EOL; } else { $newTransHistoryModel->rollback(); echo 't_id为' . $v['t_id'] . '的交易记录从result删除失败' . PHP_EOL; } } else { $newTransHistoryModel->rollback(); echo 't_id为' . $v['t_id'] . '的交易记录从result写入history失败' . PHP_EOL; } } } }
/** * 判断一口价交易卖家是否违约 */ public function IndexAction() { $limit = 100; $condition = array('t_status' => 4, 't_end_time <' => time()); $transResult = new \NewTransResultModel(); $data = $transResult->getListByWhere($condition, '0,100', '*'); $domains = new \common\Domain(); foreach ($data as $v) { $transId = $v['t_id']; // 判断域名是否在卖家ID下 $result = $domains->checkDnInUser($v['t_enameId'], $v['t_dn']); // 如果如果存在 则执行“一口价交易流程” if ($result) { $lock = $domains->lockDomain($v['t_dn'], 2); // 设置成交易状态 if (!$lock) { Logger::write('buynowtask_index', 'lock domain false ' . $v['t_id'] . '-' . $v['t_dn'] . '--' . $lock[1]); continue; } $finance = new \finance\Orders($v['t_enameId']); if (!$finance->cancelOrder($v['t_seller_order'])) { Logger::write('buynowtask_index', 'cancel order false .' . $v['t_seller_order']); } //PUSH域名 $domains->PushDomain($v['t_enameId'], $v['t_buyer'], $v['t_dn']); //确认订单 扣掉买家的钱给卖家 unset($finance); $finance = new \finance\Orders($v['t_buyer']); $finance->confirmOrder($v['t_order_id'], $v['t_money_type'], $v['t_enameId']); //更新关注表 $transLogic = new \TransLogic(); $transLogic->updateWatchInfo($v['t_id'], $v['t_now_price']); $messageObj = new \common\Message(); //通知卖家 $sms = (new \common\Users())->noticeSellerIsOk($v['t_enameId'], 'T204'); $messageObj->sendBuyNowSeller($v['t_enameId'], $v['t_dn'], $v['t_now_price'], $v['t_id'], $sms); //通知买家 $messageObj->sendBuyNowBuyer($v['t_buyer'], $v['t_dn'], $v['t_now_price'], $v['t_id']); } else { Logger::write('buynowtask_index', 'lock domain false not at user id ' . $v['t_id'] . '-' . $v['t_dn']); $trans = new \trans\Weiyue(); $trans->main($v); } } }
/** * 复制非我司域名的交易信息到new_trans_result表,状态需要修改 * @param $transInfo array [交易信息] * @param $status int [修改交易状态] * @param $finishTime int [交易完成时间] * @return int|boolean [lastid or false] */ public function copyToResult($transInfo, $status, $finishTime = false) { $transInfo['t_status'] = $status; $transInfo['t_last_time'] = $transInfo['t_complate_time'] = !$finishTime ? $_SERVER['REQUEST_TIME'] : $finishTime; $resModel = new NewTransResultModel(); $res = $resModel->setTransResult($transInfo); if (!$res) { \core\Logger::write("domain.log", array(__METHOD__, "域名{$domain}插入到交易结果表new_trans_result失败,发布时间:" . date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']))); } return $res; }
/** * 我司域名根据交易类型检查是否符合发布交易条件,并从历史交易表取出可交易的域名的历史简介和是否推荐标志 * @param int $uId 用户id * @param s $domain 格式:array('abc.com'=>array('expireTime'=>121212,'regTime'=>454545,'domianStatus'=>2)) * * @param s $type * int * */ public function comCheck($uId, $domain, $type, $info) { //我司域名 判断过期时间 注册时间 域名状态 // 判断是否是 cn 域名 是的 必须注册满7天 // 检测我司的域名 状态 获取域名状态对应的msg $status = $info['domianStatus']; $domainStatusConf = \core\Config::item('domainStatus'); if ($status != 1) { return array('flag' => false, 'msg' => '域名状态为:' . $domainStatusConf[$status] . '中,无法发布!'); } if ($this->checkCnDomainByRegtime($domain, strtotime($info['regTime']))) { return array('flag' => false, 'msg' => '该域名注册未满7天不能发布交易!'); } // 根据type 判断过期时间 $res = $this->checkExpTimeByType($type, strtotime($info['expireTime'])); if ($res['flag']) { return array('flag' => false, 'msg' => '域名将在' . $res['msg'] . '天内过期,无法发布!'); } $newTransResult = new NewTransResultModel(); // 获取可交易域名的简介和推荐标识 if ($domainInfo = $newTransResult->getDescAndHot($uId, $domain)) { // is hot 写入redis, promote:uid.domain if ($domainInfo->t_hot) { $redis = \core\driver\Redis::getInstance('default'); $redis->setex('promote:' . $domainInfo->t_enameId . $domain, 1800, $domainInfo->t_hot); } return array('flag' => true, 'msg' => $domainInfo->t_desc); } return array('flag' => true, 'msg' => ''); }