Commit 5c8c83b4 authored by wwccw0591's avatar wwccw0591

pc

parent 9319c0d2
...@@ -118,6 +118,8 @@ class ApiConst ...@@ -118,6 +118,8 @@ class ApiConst
const deleteStateZero = 0; const deleteStateZero = 0;
const deleteStateTwo = 2; const deleteStateTwo = 2;
const orderStateWaitConfirmBeyond = 300; const orderStateWaitConfirmBeyond = 300;
const orderCancelBeyondTime=600;
const orderWaitRecieveTwentyFourHours = 86400; const orderWaitRecieveTwentyFourHours = 86400;
const orderWaitRecieveThreeDays = 259200; const orderWaitRecieveThreeDays = 259200;
const deliveryFinishTwentyFourHours = 86400; const deliveryFinishTwentyFourHours = 86400;
......
...@@ -159,5 +159,6 @@ class DescribeConst ...@@ -159,5 +159,6 @@ class DescribeConst
const recieveButton='确认接单'; const recieveButton='确认接单';
const confirmButton='确认收货'; const confirmButton='确认收货';
const cancelOrderMessage='十分钟未支付,自动取消订单';
} }
?> ?>
\ No newline at end of file
...@@ -44,6 +44,9 @@ class PathConst { ...@@ -44,6 +44,9 @@ class PathConst {
const orderCloseWaitRecieveOrder="/orderCloseWaitRecieveOrder.conf"; const orderCloseWaitRecieveOrder="/orderCloseWaitRecieveOrder.conf";
const orderCancelTime="/orderCancelTime.conf";
//const favoritesStoreFavTimeConf="favoritesStoreFavTime.conf"; //const favoritesStoreFavTimeConf="favoritesStoreFavTime.conf";
......
...@@ -10,6 +10,7 @@ use Our\ApiConst; ...@@ -10,6 +10,7 @@ use Our\ApiConst;
use Our\ArrayConst; use Our\ArrayConst;
use Our\Common; use Our\Common;
use Our\DbNameConst; use Our\DbNameConst;
use Our\DescribeConst;
use Our\ExpressConst; use Our\ExpressConst;
use Our\ImageConst; use Our\ImageConst;
use Our\NameConst; use Our\NameConst;
...@@ -457,8 +458,7 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -457,8 +458,7 @@ class OrderServiceModel extends \Business\AbstractModel
} }
} }
$where['order_id']=$orderInfo['orderId']; $where['order_id']=$orderInfo['orderId'];$orderGoodsUpdateData['refund_state_name']='退款成功';
$orderGoodsUpdateData['refund_state_name']='退款成功';
$orderGoodsUpdateData['refund_id']=1; $orderGoodsUpdateData['refund_id']=1;
$orderGoodsDao->update($where,$orderGoodsUpdateData); $orderGoodsDao->update($where,$orderGoodsUpdateData);
echo " 退款操作操作成功:".$orderId; echo " 退款操作操作成功:".$orderId;
...@@ -474,6 +474,59 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -474,6 +474,59 @@ class OrderServiceModel extends \Business\AbstractModel
public $baseDir; public $baseDir;
//订单任务脚本关闭订单 //订单任务脚本关闭订单
//订单任务脚本关闭订单
public function cancelOrderTask()
{
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$orderCommonDao = \DAO\Order\OrderCommonModel::getInstance(DbNameConst::masterDBConnectName);
$orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::masterDBConnectName);
$orderConfirmUtilDao=OrderConfirmUtil::getInstance(DbNameConst::masterDBConnectName);
$beginTime = file_get_contents($this->baseDir . \Our\PathConst::orderCancelTime, TIMESTAMP);
$beginTime = $beginTime ? $beginTime : ApiConst::zero;
$endTime = TIMESTAMP - ApiConst::orderCancelBeyondTime;
$orders = $orderDao->getMustCecelOrders($beginTime, $endTime, $orderDao->getOrderDetailField());
if (!empty($orders)) {
foreach ($orders as $order) {
//更新订单信息
$updateData = array('order_state' => ApiConst::orderStateCancel);
$update = $orderDao->update(array('order_id' => $order['orderId']),$updateData);
$updateCommonData['order_message']=DescribeConst::cancelOrderMessage;
$res=$orderCommonDao->update(array('order_id'=>$order['orderId']),$updateCommonData);
if(!$update || !$res){
echo '订单:'.$order['orderId'].'没取消成功!';
}
$orderDao->deleteOrderCache($order['buyerId'],(string)$order['orderId'],$order['storeId']);
}
$orderIds = array_column($orders, 'orderId');
//更新商品库存
$orderGoods = $orderGoodsDao->getOrderGoodsByOrderIds($orderIds, $this->getGoodsDetailField());
$storeCartsList=array();
$storeCarts=array();
$storeCarts['storeCarts']=array();
foreach($orderGoods as $orderGood){
$orderGood['type']=!empty($orderGood['goodsGroup'])? \Our\ApiConst::addBundingToCart:\Our\ApiConst::addGoodsToCart;
$orderGood['goodsNum']=$orderGood['goodsNum'];
$orderGood['goodsList']=\Our\Common::isSerialized($orderGood['goodsGroup'])?unserialize($orderGood['goodsGroup']):array();
array_push($storeCarts['storeCarts'],$orderGood);
}
if(!empty($storeCarts['storeCarts'])){
array_push($storeCartsList,$storeCarts);
}
// $orderDao->updateNotRecieveOrders(ApiConst::orderStateWaitConfirm, ApiConst::orderStateClose, 'add_time', ApiConst::orderStateWaitConfirmBeyond, $this->orderMessageField);
try{
$orderConfirmUtilDao->updateGoodsStorage($storeCartsList,\Our\ApiConst::plus);
}catch(\Exception $ex){
$orderidsStr=implode(',',array_column($orders,'orderId'));
echo '商品库存更新失败:'.$ex->getMessage().$ex->getCode().":".$orderidsStr;
}
// //发送消息
// $push = Push::getInstance();
// $push->pushOrderCloseMessage($orders);
}
file_put_contents($this->baseDir . \Our\PathConst::orderCancelTime, $endTime);
}
public function changeOrderStatus() public function changeOrderStatus()
{ {
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName); $orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
......
...@@ -822,7 +822,15 @@ class OrderModel extends \DAO\AbstractModel ...@@ -822,7 +822,15 @@ class OrderModel extends \DAO\AbstractModel
{ {
$this->setDb($this->dbName); $this->setDb($this->dbName);
$where=Common::format(" add_time between {0} and {1} and order_state={2}",$beginTime,$endTime,ApiConst::orderStateWaitConfirm); $where=Common::format(" add_time between {0} and {1} and order_state={2}",$beginTime,$endTime,ApiConst::orderStateWaitConfirm);
$list = $this->db->select($field)->from($this->_tableName)->where($where)->order('payment_time','desc')->fetchAll(); $list = $this->db->select($field)->from($this->_tableName)->where($where)->order('add_time','desc')->fetchAll();
return $list;
}
//任务脚本方法
public function getMustCecelOrders($beginTime=ApiConst::zero, $endTime, $field = '*')
{
$this->setDb($this->dbName);
$where=Common::format(" add_time between {0} and {1} and order_state={2}",$beginTime,$endTime,ApiConst::orderStateWaitPay);
$list = $this->db->select($field)->from($this->_tableName)->where($where)->order('add_time','desc')->fetchAll();
return $list; return $list;
} }
//任务脚本方法 //任务脚本方法
......
...@@ -84,6 +84,17 @@ class OrderCommonModel extends \DAO\AbstractModel ...@@ -84,6 +84,17 @@ class OrderCommonModel extends \DAO\AbstractModel
$result = $this->db->insert($this->_tableName)->rows($data)->execute(); $result = $this->db->insert($this->_tableName)->rows($data)->execute();
return $result; return $result;
} }
/**
* 更新数据
* @param $data
* @param $where
* @return mixed
*/
public function update($where, $data)
{
$this->setDb(\Our\DbNameConst::masterDBConnectName);
return $this->db->update($this->_tableName)->where($where)->rows($data)->execute();
}
public function insertAll($datas) public function insertAll($datas)
......
<?php
/**
* 取消订单
* 执行时间:每分钟执行一次
*
* @author chenjiebin <sjlinyu@qq.com>
*/
define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../../../')); //指向public的上一级
require APPLICATION_PATH . '/scripts/crontab/baseCli.php';
require APPLICATION_PATH . '/scripts/crontab/common.php';
error_reporting(E_ALL ^ E_NOTICE);
class cliOrderCancel extends basecli
{
const CLI_ADMIN_ID = 255;
private $bDoUnLock = FALSE; // 是否允许释放 LOCK 文件
private $_debug = 0;
private $lockFileName;
private $fromState;
private function mkdirs($dir, $mode = 0777)
{
if (is_dir($dir) || @mkdir($dir, $mode)){
return TRUE;
}
if (!$this->mkdirs(dirname($dir), $mode)){
return FALSE;
}
return @mkdir($dir, $mode);
}
/**
* 析构
*/
public function __destruct()
{
parent::__destruct();
if ($this->bDoUnLock)
{
@unlink($this->lockFileName);
}
}
protected function autoCancelOrder(){
$orderService=\Business\Order\OrderServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$orderService->baseDir= \Our\Common::getConfig('out.config');
$orderService->cancelOrderTask();
// $messageService=\Business\Message\MessageServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName);
// $messageService->addMessageCenterToDb();
}
protected function _runCli()
{
$this->_debug = isset($this->aArgv[1]) ? intval($this->aArgv[1]) : 0;
if ($this->_debug)
{
echo "*** Debug mode ***\n";
}
// Step: 02 检查是否已有相同CLI在运行中
$lockDir=$this->_getBaseFileName('order');
if(!$this->mkdirs($lockDir)){
echo '****create dir fail ****';
exit;
}
$this->lockFileName = $lockDir .DS.'cancel.locks';
if( file_exists( $this->lockFileName ) )
{
$stat = stat($this->lockFileName);
if( (TIMESTAMP - $stat['mtime']) > 1800 )
{
echo "文件被锁超过1800秒,被强制删除";
@unlink($this->lockFileName);
}
else
{
$this->halt( '[' . date('Y-m-d H:i:s') .'] The CLI is running'."\n");
}
}
$this->bDoUnLock = true;
if(APP_ENV =='pre' || APP_ENV=='product'){
file_put_contents($this->lockFileName ,"running" ); // CLI 独占锁
}
$this->autoCancelOrder();
echo '定单取消成功'."\r\n";
}
}
$oCli = new cliOrderCancel(TRUE);
EXIT;
?>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment