Commit f66f4ea2 authored by wwccw0591's avatar wwccw0591

Merge branch 'master_dev' of git.shenbd.com:qm-develop/shenbd into linqing

parents 2d3cafc1 f4709d26
...@@ -42,7 +42,7 @@ class GoodsController extends \Our\Controller_AbstractIndex { ...@@ -42,7 +42,7 @@ class GoodsController extends \Our\Controller_AbstractIndex {
public function testAction(){ public function testAction(){
//$info = $this->goodsService->recommend(); //$info = $this->goodsService->recommend();
//\Business\Goods\GoodsCommonServiceModel::getInstance()->saleGoods(); //\Business\Goods\GoodsCommonServiceModel::getInstance()->saleGoods();
\Business\Store\StoreServiceModel::getInstance()->pendingItemsInform(); \Business\Store\StoreServiceModel::getInstance()->tryExpireInform();
} }
public function getAttrsAction(){ public function getAttrsAction(){
......
...@@ -936,7 +936,7 @@ class OrderConfirmUtil { ...@@ -936,7 +936,7 @@ class OrderConfirmUtil {
if($blGoodsList){ if($blGoodsList){
$dbName = \Our\DbNameConst::masterDBConnectName; $dbName = \Our\DbNameConst::masterDBConnectName;
$pBundlingDao = \DAO\PBundlingModel::getInstance($dbName); $pBundlingDao = \DAO\PBundlingModel::getInstance($dbName);
$pBundlingResult = $pBundlingDao->updateBlStorage($blGoodsList); $pBundlingResult = $pBundlingDao->updateBlStorage($blGoodsList,$op);
if(!$pBundlingResult){ if(!$pBundlingResult){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::blGoodsStorageToDBFailedForOrder); \Error\ErrorModel::throwException(\Error\CodeConfigModel::blGoodsStorageToDBFailedForOrder);
} }
...@@ -956,7 +956,7 @@ class OrderConfirmUtil { ...@@ -956,7 +956,7 @@ class OrderConfirmUtil {
if($blGoodsList){ if($blGoodsList){
foreach($blGoodsList as $key=>$blGoods){ foreach($blGoodsList as $key=>$blGoods){
$pBundlingCacheResult = $pBundlingDao->opBlGoodsStorage($key,$blGoods['blStorage']);//组合销售库存删减 $pBundlingCacheResult = $pBundlingDao->opBlGoodsStorage($key,$blGoods['blStorage'],$op);//组合销售库存删减
if($pBundlingCacheResult===false){ if($pBundlingCacheResult===false){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::blGoodsStorageToCacheFailedForOrder); \Error\ErrorModel::throwException(\Error\CodeConfigModel::blGoodsStorageToCacheFailedForOrder);
} }
......
...@@ -70,6 +70,20 @@ class Common ...@@ -70,6 +70,20 @@ class Common
} }
return false; return false;
} }
/**
* @param $arr
* @param $key_name
* @return array
* 将数据库中查出的列表以指定的 id 作为数组的键名
*/
public static function convertArrKey($arr, $key_name)
{
$arr2 = array();
foreach ($arr as $key => $val) {
$arr2[$val[$key_name]] = $val;
}
return $arr2;
}
public static function isSerialized($data) public static function isSerialized($data)
{ {
...@@ -94,7 +108,22 @@ class Common ...@@ -94,7 +108,22 @@ class Common
} }
return false; return false;
} }
public static function redisPublish($control,$method,$params){
//发布application.redis.redisPublishName
$conf = \Yaf\Registry::get('config')->get('redis.database.params');
$redisPublishName=\Yaf\Registry::get('config')->get('redis.redisPublishName');
$redis=new \Redis();
$redis->connect($conf['host'], $conf['port']);
if(!empty($conf['password'])){
$redis->auth($conf['password']);
}
$message['className']=$control;
$message['method']=$method;
$message['params']=$params;
$message=json_encode($message);
$ret=$redis->publish($redisPublishName,$message);
return $ret;
}
/** /**
* 获取客户端IP * 获取客户端IP
* *
......
...@@ -88,7 +88,21 @@ class SmsTemplateConst{ ...@@ -88,7 +88,21 @@ class SmsTemplateConst{
'storeCount', 'storeCount',
'weiCount' 'weiCount'
) )
),
//尊敬的${storename},您的店铺试用期将于{limitday}天后到期,请及时登录商户后台进行注册信息核对。为了您继续享有独家推荐权,请及时缴纳保证金及相应的签约分类技术服务费。
'tryExpire'=> array(
'templateId'=>'SMS_154585403',
'parameters'=>array(
'storename',
'limitday'
)
),
//尊敬的${storename},您的店铺存在即将到期的签约分类,请及时登录商户后台续费,以免过期,过期后需重新申请。
'signClassExpire'=> array(
'templateId'=>'SMS_154590436',
'parameters'=>array(
'storename'
)
) )
); );
} }
...@@ -26,8 +26,8 @@ class TencentPay { ...@@ -26,8 +26,8 @@ class TencentPay {
protected $prepay_id =''; protected $prepay_id ='';
protected $tradeType = ''; protected $tradeType = '';
public $data;//接收到的数据,类型为关联数组 public $data;//接收到的数据,类型为关联数组
var $returnParameters;//返回参数,类型为关联数组 public $returnParameters;//返回参数,类型为关联数组
var $parameters;//请求参数,类型为关联数组 public $parameters;//请求参数,类型为关联数组
public function setRequestParams($orderInfo){ public function setRequestParams($orderInfo){
$pay_sn = $orderInfo['paySn']; $pay_sn = $orderInfo['paySn'];
...@@ -158,7 +158,11 @@ class TencentPay { ...@@ -158,7 +158,11 @@ class TencentPay {
{ {
if($signType=='MD5'){ if($signType=='MD5'){
//echo '加签参数:'.json_encode($this->parameters)."\n"; //echo '加签参数:'.json_encode($this->parameters)."\n";
$this->parameters["sign"] = $this->getSign($this->parameters);//签名 if(empty($this->parameters)){
echo 234234;exit;
}
$tempParam = $this->parameters;
$this->parameters["sign"] = $this->getSign($tempParam);//签名
}else{ }else{
$this->parameters["sign"] = $this->getHMACSHA1Sign($this->parameters,'sha256'); $this->parameters["sign"] = $this->getHMACSHA1Sign($this->parameters,'sha256');
} }
...@@ -280,6 +284,9 @@ class TencentPay { ...@@ -280,6 +284,9 @@ class TencentPay {
*/ */
public function getSign($Obj) public function getSign($Obj)
{ {
/*if(empty($Obj)){
$Obj = $this->parameters;
}*/
foreach ($Obj as $k => $v) foreach ($Obj as $k => $v)
{ {
$Parameters[$k] = $v; $Parameters[$k] = $v;
...@@ -287,11 +294,11 @@ class TencentPay { ...@@ -287,11 +294,11 @@ class TencentPay {
//签名步骤一:按字典序排序参数 //签名步骤一:按字典序排序参数
ksort($Parameters); ksort($Parameters);
$String = $this->formatBizQueryParaMap($Parameters, false); $String = $this->formatBizQueryParaMap($Parameters, false);
$String = $String."&key=".$this->key; $String = $String."&key=".$this->key;
$String = str_replace(array("\r\n", "\r", "\n"," "), "", $String); $String = str_replace(array("\r\n", "\r", "\n"," "), "", $String);
$String = md5($String); $String = md5($String);
$result_ = strtoupper($String); $result_ = strtoupper($String);
//echo "\r\n sign:"."$result_";
return $result_; return $result_;
} }
......
...@@ -91,7 +91,6 @@ class WxLitePay extends \Payment\TencentPay{ ...@@ -91,7 +91,6 @@ class WxLitePay extends \Payment\TencentPay{
$this->parameters['out_trade_no'] = $param['outTradeNo']; $this->parameters['out_trade_no'] = $param['outTradeNo'];
$this->parameters['out_refund_no'] = $param['refundOrderNo']; $this->parameters['out_refund_no'] = $param['refundOrderNo'];
$xml = $this->createXml(); $xml = $this->createXml();
$response = $this->postXmlSSLCurl($xml, $this->refundUrl, 6); $response = $this->postXmlSSLCurl($xml, $this->refundUrl, 6);
$values = $this->xmlToArray($response); $values = $this->xmlToArray($response);
......
...@@ -895,7 +895,8 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -895,7 +895,8 @@ class OrderServiceModel extends \Business\AbstractModel
// } // }
// } // }
$orderInfo['refundOrderNo']=$refundSn; $orderInfo['refundOrderNo']=$refundSn;
if($refundReturnDao->refundMoney($orderInfo)){ $refundRes=$refundReturnDao->refundMoney($orderInfo);
if($refundRes){
$where['order_id']=$orderInfo['orderId']; $where['order_id']=$orderInfo['orderId'];
//$orderGoodsUpdateData['refund_state_name']='退款成功'; //$orderGoodsUpdateData['refund_state_name']='退款成功';
$orderGoodsUpdateData['is_refund']=1; $orderGoodsUpdateData['is_refund']=1;
...@@ -906,6 +907,7 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -906,6 +907,7 @@ class OrderServiceModel extends \Business\AbstractModel
echo $refundReturnDao->errorMessage."orderId:".$orderId; echo $refundReturnDao->errorMessage."orderId:".$orderId;
return false; return false;
} }
$orderDao->update(array('order_id' =>$orderInfo['orderId']),array('order_note'=>$refundReturnDao->errorMessage));
} }
...@@ -985,13 +987,16 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -985,13 +987,16 @@ class OrderServiceModel extends \Business\AbstractModel
} }
file_put_contents($this->baseDir . \Our\PathConst::orderCancelTime, $endTime); file_put_contents($this->baseDir . \Our\PathConst::orderCancelTime, $endTime);
} }
public function changeOrderStatusSecond() public function changeOrderStatusSecond($bTime=false)
{ {
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName); $orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$endTime = file_get_contents($this->baseDir . \Our\PathConst::orderCloseWaitRecieveOrder); $endTime = file_get_contents($this->baseDir . \Our\PathConst::orderCloseWaitRecieveOrder);
$endTime = $endTime ? $endTime : ApiConst::zero; $endTime = $endTime ? $endTime : ApiConst::zero;
$beginTime = $endTime - ApiConst::halfDaySecond; $beginTime = $endTime - ApiConst::tenDaySecond;
$storeDao=\DAO\StoreModel::getInstance(); $storeDao=\DAO\StoreModel::getInstance();
if($bTime){
$beginTime=0;
}
// $beginTime=0; // $beginTime=0;
$orders = $orderDao->getMustCecelRecieveOrders($beginTime, $endTime, $orderDao->getOrderDetailField()); $orders = $orderDao->getMustCecelRecieveOrders($beginTime, $endTime, $orderDao->getOrderDetailField());
$newOrders=array(); $newOrders=array();
...@@ -1085,10 +1090,12 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -1085,10 +1090,12 @@ class OrderServiceModel extends \Business\AbstractModel
if ($order['paymentTime'] > ApiConst::zero && in_array($order['paymentType'], ArrayConst::orderPayTypeOnlines)) { if ($order['paymentTime'] > ApiConst::zero && in_array($order['paymentType'], ArrayConst::orderPayTypeOnlines)) {
$isRefunMoney= $this->changeOrderStateCancelUnconditional($order); $isRefunMoney= $this->changeOrderStateCancelUnconditional($order);
if(!$isRefunMoney){ if(!$isRefunMoney){
$orderDao->db->doRollback(); $orderDao->db->doRollback();
continue; continue;
} }
} }
array_push($orderIds,$order['orderId']); array_push($orderIds,$order['orderId']);
$this->updateOrderGoodsStoregeByOrderIds($orderIds); $this->updateOrderGoodsStoregeByOrderIds($orderIds);
array_push($newOrders,$order); array_push($newOrders,$order);
...@@ -1097,6 +1104,7 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -1097,6 +1104,7 @@ class OrderServiceModel extends \Business\AbstractModel
$orderDao->deleteOrderCache($order['buyerId'],(string)$order['orderId'],$order['storeId'],true); $orderDao->deleteOrderCache($order['buyerId'],(string)$order['orderId'],$order['storeId'],true);
$storeDao->deleteStoreCache($order['storeId'],$order['orderId']); $storeDao->deleteStoreCache($order['storeId'],$order['orderId']);
$push=\Our\Push::getInstance(); $push=\Our\Push::getInstance();
echo json_encode($order);
$pushData=array('storeId'=>$order['storeId'], $pushData=array('storeId'=>$order['storeId'],
'type'=>ApiConst::messageWaitReceive, 'type'=>ApiConst::messageWaitReceive,
'waitReceiveCount'=>ApiConst::reduceOne, 'waitReceiveCount'=>ApiConst::reduceOne,
...@@ -1189,13 +1197,25 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -1189,13 +1197,25 @@ class OrderServiceModel extends \Business\AbstractModel
} }
public function updateGoodsStoregeByGoodsIds($storeId,$goodsid,$num=ApiConst::zero,$type=ApiConst::plus){ public function updateGoodsStoregeByGoodsIds($storeId,$goodsid,$num=ApiConst::zero,$type=ApiConst::plus){
$where['goods_id']=$goodsid; if(is_array($goodsid)){
$goodsids=array($goodsid);
$convertGoodsId=Common::convertArrKey($goodsid,'goodsId');
$where['goods_id']=array('in',$goodsids);
}else{
$where['goods_id']=$goodsid;
}
$where['store_id']=$storeId; $where['store_id']=$storeId;
$goodsDao = \DAO\GoodsModel::getInstance(DbNameConst::masterDBConnectName); $goodsDao = \DAO\GoodsModel::getInstance(DbNameConst::masterDBConnectName);
$goodses=$goodsDao->getList($where,$goodsDao->goodsDetailField); $goodses=$goodsDao->getList($where,$goodsDao->goodsDetailField);
if(!empty($goodses)){ if(!empty($goodses)){
foreach($goodses as &$goods){ if(is_array($goodsid)){
foreach($goodses as &$goods){
$goods['goodsNum']=$convertGoodsId[$goods['goodsId']]['num'];
}
}else{
foreach($goodses as &$goods){
$goods['goodsNum']=$num; $goods['goodsNum']=$num;
}
} }
if($this->updateDateGoodsStoregeByOrderGoods($goodses,$type,false)){ if($this->updateDateGoodsStoregeByOrderGoods($goodses,$type,false)){
return true; return true;
...@@ -1758,7 +1778,10 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -1758,7 +1778,10 @@ class OrderServiceModel extends \Business\AbstractModel
} }
return $order; return $order;
} }
public function testPush($msg){
echo $msg.'abcde';
return true;
}
/** /**
* 类实例 * 类实例
* *
......
...@@ -202,6 +202,8 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -202,6 +202,8 @@ class StoreServiceModel extends \Business\AbstractModel{
if($sale_act && $sale_act['sale_start_date'] <= time() && $sale_act['sale_end_date'] >= time()){ if($sale_act && $sale_act['sale_start_date'] <= time() && $sale_act['sale_end_date'] >= time()){
$result = \DAO\SaleMemberModel::getInstance()->insertOrUpdate(array('sale_id'=>$sale['member_id'],'sale_act_id'=>$sale['sale_act_id'],'member_id'=>$memberId,'store_id'=>$sale_act['store_id'])); $result = \DAO\SaleMemberModel::getInstance()->insertOrUpdate(array('sale_id'=>$sale['member_id'],'sale_act_id'=>$sale['sale_act_id'],'member_id'=>$memberId,'store_id'=>$sale_act['store_id']));
\Redis\Db4\SaleActivityRedisModel::getInstance()->tableDel('storeId:'.$storeId); \Redis\Db4\SaleActivityRedisModel::getInstance()->tableDel('storeId:'.$storeId);
$saleMemberDao = \DAO\SaleMemberModel::getInstance();
\Our\RedisHelper::delCachedFunction(\Redis\Db4\SaleMemberRedisModel::getInstance(),array(&$saleMemberDao, 'getActAndSale'),array(array('han_sale_member.store_id'=>$storeId,'han_sale_member.member_id'=>$memberId),'han_sale_activity.sale_act_id,han_sale_activity.sale_start_date,han_sale_activity.sale_end_date,han_sale_member.sale_id'),array($storeId));
} }
} }
} }
...@@ -213,11 +215,11 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -213,11 +215,11 @@ class StoreServiceModel extends \Business\AbstractModel{
$storeMember['fav_type'] = \Our\ApiConst::one; $storeMember['fav_type'] = \Our\ApiConst::one;
$storeMembers[] = $storeMember; $storeMembers[] = $storeMember;
$favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance(); $favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance();
$one = $favoritesStoreDao->getOne('store_id',array('store_id'=>$storeId,'member_id'=>$memberId,'fav_type'=>\Our\ApiConst::one),'');
$result = $favoritesStoreDao->insertAll($storeMembers); $result = $favoritesStoreDao->insertAll($storeMembers);
if($result) { if($result && !$one) {
$favoritesStoreDao->updateStoreCollecitonsCache(array($storeId),$memberId,2); $favoritesStoreDao->updateStoreCollecitonsCache(array($storeId),$memberId,2);
} }
}else{ }else{
$sess=\Yaf\Session::getInstance(); $sess=\Yaf\Session::getInstance();
$scan_store_ids = $sess->get('scan_store_ids'); $scan_store_ids = $sess->get('scan_store_ids');
...@@ -570,34 +572,34 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -570,34 +572,34 @@ class StoreServiceModel extends \Business\AbstractModel{
* @param $memberId * @param $memberId
*/ */
public function updateFavoritesStore($param,$memberId){ public function updateFavoritesStore($param,$memberId){
if(!(isset($param['storeId'])&&$param['storeId'])){ // if(!(isset($param['storeId'])&&$param['storeId'])){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyScanStoreId); // \Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyScanStoreId);
} // }
$storeId = trim($param['storeId']); // $storeId = trim($param['storeId']);
$storeInfo = \DAO\StoreModel::getInstance()->get($storeId,false); // $storeInfo = \DAO\StoreModel::getInstance()->get($storeId,false);
if(!$storeInfo){ // if(!$storeInfo){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyScanStoreInfo); // \Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyScanStoreInfo);
} // }
$storeMembers = array(); // $storeMembers = array();
$storeMember = array(); // $storeMember = array();
$storeMember['store_id'] = $storeId; // $storeMember['store_id'] = $storeId;
$storeMember['member_id'] = $memberId; // $storeMember['member_id'] = $memberId;
$storeMember['fav_from'] = \Our\ApiConst::scanFavor; // $storeMember['fav_from'] = \Our\ApiConst::scanFavor;
$storeMember['fav_type'] = \Our\ApiConst::one; // $storeMember['fav_type'] = \Our\ApiConst::one;
$storeMembers[] = $storeMember; // $storeMembers[] = $storeMember;
$favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance(); // $favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance();
//
$one = $favoritesStoreDao->getOne('store_id',array('store_id'=>$storeId,'member_id'=>$memberId,'fav_type'=>\Our\ApiConst::one,'fav_from'=>\Our\ApiConst::scanFavor),''); // $one = $favoritesStoreDao->getOne('store_id',array('store_id'=>$storeId,'member_id'=>$memberId,'fav_type'=>\Our\ApiConst::one),'');
if(!$one) { // if(!$one) {
$result = $favoritesStoreDao->insertAll($storeMembers); // $result = $favoritesStoreDao->insertAll($storeMembers);
if(!$result){ // if(!$result){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::saveScanStoreInfoFailed); // \Error\ErrorModel::throwException(\Error\CodeConfigModel::saveScanStoreInfoFailed);
} // }
$favoritesStoreDao->updateStoreCollecitonsCache(array($storeId),$memberId,2); // $favoritesStoreDao->updateStoreCollecitonsCache(array($storeId),$memberId,2);
$favoritesDao = \DAO\FavoritesStoreModel::getInstance(); // $favoritesDao = \DAO\FavoritesStoreModel::getInstance();
\Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$favoritesDao, 'getOne'),array(),array($memberId)); // \Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$favoritesDao, 'getOne'),array(),array($memberId));
//
} // }
return true; return true;
...@@ -1230,6 +1232,10 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -1230,6 +1232,10 @@ class StoreServiceModel extends \Business\AbstractModel{
public function updateStoreTotalDeposit(){ public function updateStoreTotalDeposit(){
\DAO\StoreModel::getInstance()->updateStoreDeposit(); \DAO\StoreModel::getInstance()->updateStoreDeposit();
} }
/**
* 待办事务通知
*/
public function pendingItemsInform() { public function pendingItemsInform() {
$storePaymentDao = \DAO\Store\StorePaymentModel::getInstance(); $storePaymentDao = \DAO\Store\StorePaymentModel::getInstance();
$weiCount = $storePaymentDao->getStorePaymentCount(array('payment_type'=>0,'status'=>0)); $weiCount = $storePaymentDao->getStorePaymentCount(array('payment_type'=>0,'status'=>0));
...@@ -1239,6 +1245,47 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -1239,6 +1245,47 @@ class StoreServiceModel extends \Business\AbstractModel{
$phone = $settingDAO->getListCache(array('pending_items_inform_tel'))['pending_items_inform_tel']; $phone = $settingDAO->getListCache(array('pending_items_inform_tel'))['pending_items_inform_tel'];
\DAO\ShortMessageModel::getInstance()->sendMessageSmsForPlatform($phone,'storeWaitCheck',array('storeCount'=>$storeCount,'weiCount'=>$weiCount)); \DAO\ShortMessageModel::getInstance()->sendMessageSmsForPlatform($phone,'storeWaitCheck',array('storeCount'=>$storeCount,'weiCount'=>$weiCount));
} }
/**
* 试用快到期通知
*/
public function tryExpireInform() {
$storeList = \DAO\StoreModel::getInstance()->getTryExpireStore();
if($storeList) {
foreach ($storeList as $store) {
if( TIMESTAMP+9*24*3600<$store['store_end_time'] and $store['store_end_time'] <= TIMESTAMP+10*24*3600) {
$limitday = 10;
}elseif (TIMESTAMP+4*24*3600<$store['store_end_time'] and $store['store_end_time'] <= TIMESTAMP+5*24*3600) {
$limitday = 5;
}else{
$limitday = 3;
}
\DAO\ShortMessageModel::getInstance()->sendMessageSmsForPlatform($store['store_phone'],'tryExpire',array('storename'=>$store['store_name'],'limitday'=>$limitday));
}
}
}
/**
* 签约分类快到期通知
*/
public function signedClassExpireInform() {
$classList = \DAO\QmStoreClassModel::getInstance()->selectByWhere(array('is_charged'=>1,'deadline'=>array('between',TIMESTAMP+2*24*3600+1,TIMESTAMP+3*24*3600),'class_style'=>2),'deadline,store_id');
if($classList) {
$storeIds = array_column($classList,'store_id');
$storeFullList = \DAO\StoreModel::getInstance()->getStoreFullList(array('store_id'=>array('in',$storeIds)),'contract_time,store_id,store_phone,store_name');
$list = \Our\Common::intergrateOneToOne($classList,$storeFullList,'store_id','store_id');
foreach ($list as $v) {
$deadline = $v['deadline'];
$contarct_time = $v['contract_time'];
if($deadline<$contarct_time){
$maxSignEndTime = mktime(0,0,0,date('m',$contarct_time),1,date('Y',$contarct_time))-1;
if($maxSignEndTime==$deadline){
continue;
}
\DAO\ShortMessageModel::getInstance()->sendMessageSmsForPlatform($v['store_phone'],'signClassExpire',array('storename'=>$v['store_name']));
}
}
}
}
/** /**
*/ */
private static $_instance = null; private static $_instance = null;
......
...@@ -369,15 +369,15 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -369,15 +369,15 @@ class MemberServiceModel extends \Business\AbstractModel
$favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance(); $favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance();
$storeIds = array_column($scan_store_ids,'store_id'); $storeIds = array_column($scan_store_ids,'store_id');
//$list = $favoritesStoreDao->selectList(array('store_id'=>array('in',$storeIds),'member_id'=>$memberId,'fav_type'=>0),'store_id'); //$list = $favoritesStoreDao->selectList(array('store_id'=>array('in',$storeIds),'member_id'=>$memberId,'fav_type'=>0),'store_id');
$list = $favoritesStoreDao->selectList(array('store_id'=>array('in',$storeIds),'member_id'=>$memberId,'fav_type'=>\Our\ApiConst::one,'fav_from'=>\Our\ApiConst::scanFavor),'store_id'); $list = $favoritesStoreDao->selectList(array('store_id'=>array('in',$storeIds),'member_id'=>$memberId,'fav_type'=>\Our\ApiConst::one),'store_id');
$storeIds2 = $list ? array_column($list, 'store_id') : []; $storeIds2 = $list ? array_column($list, 'store_id') : [];
$storeIds = array_diff($storeIds,$storeIds2); $storeIds = array_diff($storeIds,$storeIds2);
if($storeIds) { $result = $favoritesStoreDao->insertAll($storeMembers);
$result = $favoritesStoreDao->insertAll($storeMembers); if(!$result){
if(!$result){ \Our\Log::getInstance()->write(json_encode($storeMembers).'扫码数据写入失败');
\Our\Log::getInstance()->write(json_encode($storeMembers).'扫码数据写入失败'); return false;
return false; }
} if($storeIds && $result) {
$favoritesStoreDao->updateStoreCollecitonsCache($storeIds,$memberId,2); $favoritesStoreDao->updateStoreCollecitonsCache($storeIds,$memberId,2);
} }
......
...@@ -209,7 +209,7 @@ class SalespersonServiceModel extends \Business\AbstractModel ...@@ -209,7 +209,7 @@ class SalespersonServiceModel extends \Business\AbstractModel
// $where = sprintf($where,ApiConst::orderStateComplete,ApiConst::zero,ApiConst::zero,ApiConst::refundSellerRefuse,ApiConst::platNotIn,ApiConst::platIn,ApiConst::refundPlatformRefuse); // $where = sprintf($where,ApiConst::orderStateComplete,ApiConst::zero,ApiConst::zero,ApiConst::refundSellerRefuse,ApiConst::platNotIn,ApiConst::platIn,ApiConst::refundPlatformRefuse);
}else{ }else{
// $where .=" AND (order_state < %s OR (order_state = %s AND refund_id > %s AND (seller_state != %s OR (is_platform_in = %s AND platform_state != %s ))))"; // $where .=" AND (order_state < %s OR (order_state = %s AND refund_id > %s AND (seller_state != %s OR (is_platform_in = %s AND platform_state != %s ))))";
$where .= " AND order_state < 40 OR (order_state = 40 AND is_refund = 1)"; $where .= " AND (order_state < 40 OR (order_state = 40 AND is_refund = 1))";
// $where = sprintf($where,ApiConst::orderStateComplete,ApiConst::orderStateComplete,ApiConst::zero,ApiConst::refundSellerRefuse,ApiConst::platIn,ApiConst::refundPlatformRefuse); // $where = sprintf($where,ApiConst::orderStateComplete,ApiConst::orderStateComplete,ApiConst::zero,ApiConst::refundSellerRefuse,ApiConst::platIn,ApiConst::refundPlatformRefuse);
} }
$goodsList = $saleOrderDAO->getOrderGoodsList($where,'member_id,member_name AS memberName,member_avatar AS memberAvatar,sum(goods_num) AS goodsNum','member_id',$limit); $goodsList = $saleOrderDAO->getOrderGoodsList($where,'member_id,member_name AS memberName,member_avatar AS memberAvatar,sum(goods_num) AS goodsNum','member_id',$limit);
......
...@@ -74,8 +74,11 @@ class GoodsModel extends \DAO\AbstractModel { ...@@ -74,8 +74,11 @@ class GoodsModel extends \DAO\AbstractModel {
public function getList($where,$field){ public function getList($where,$field){
$this->setDb(); $this->setDb();
$res= $this->db->select($field)->from($this->_tableName)->where($where)->order('goods_storage','desc')->fetchAll(); if(is_array($where)){
return $res; $where=$this->db->getSqlWhereByArray($where);
}
$res= $this->db->select($field)->from($this->_tableName)->where($where)->order('goods_storage','desc')->fetchAll();
return $res;
} }
public function getListGroup($where,$field,$groupField){ public function getListGroup($where,$field,$groupField){
......
...@@ -1007,7 +1007,7 @@ class OrderModel extends \DAO\AbstractModel ...@@ -1007,7 +1007,7 @@ class OrderModel extends \DAO\AbstractModel
public function getMustCecelRecieveOrders($beginTime=ApiConst::zero, $endTime, $field = '*') public function getMustCecelRecieveOrders($beginTime=ApiConst::zero, $endTime, $field = '*')
{ {
$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(" order_state={2} and add_time between {0} and {1} ",$beginTime,$endTime,ApiConst::orderStateWaitConfirm);
$list = $this->db->select($field)->from($this->_tableName)->where($where)->order('add_time','desc')->fetchAll(); $list = $this->db->select($field)->from($this->_tableName)->where($where)->order('add_time','desc')->fetchAll();
return $list; return $list;
} }
......
...@@ -474,6 +474,7 @@ class RefundReturnModel extends \DAO\AbstractModel ...@@ -474,6 +474,7 @@ class RefundReturnModel extends \DAO\AbstractModel
$param['refundFee'] = $orderInfo['orderAmount'];//全额退款 $param['refundFee'] = $orderInfo['orderAmount'];//全额退款
$param['storeId'] = $orderInfo['storeId']; $param['storeId'] = $orderInfo['storeId'];
$param['buyerId'] = $orderInfo['buyerId']; $param['buyerId'] = $orderInfo['buyerId'];
if (CURRENTVERSION != \Our\NameConst::versionDefault && in_array(intval($orderInfo['paymentType']), array(\Our\ApiConst::wxAppPayType, \Our\ApiConst::wxProgram))) { if (CURRENTVERSION != \Our\NameConst::versionDefault && in_array(intval($orderInfo['paymentType']), array(\Our\ApiConst::wxAppPayType, \Our\ApiConst::wxProgram))) {
$mchIdArray = \DAO\StoreModel::getInstance()->getStoreWxMchId($param['storeId']); $mchIdArray = \DAO\StoreModel::getInstance()->getStoreWxMchId($param['storeId']);
if ($mchIdArray['errorCode'] > 0) { if ($mchIdArray['errorCode'] > 0) {
...@@ -483,17 +484,23 @@ class RefundReturnModel extends \DAO\AbstractModel ...@@ -483,17 +484,23 @@ class RefundReturnModel extends \DAO\AbstractModel
$param['subMchId'] = $mchIdArray['mchId']; $param['subMchId'] = $mchIdArray['mchId'];
} }
if (intval($orderInfo['paymentType']) == ApiConst::wxAppPayType) { if (intval($orderInfo['paymentType']) == ApiConst::wxAppPayType) {
$wxpay = \Payment\WxPay::getInstance(); $wxpay = new \Payment\WxPay();
//unset($param['subMchId']); //unset($param['subMchId']);
$refund_return = $wxpay->refund($param); $refund_return = $wxpay->refund($param);
unset($wxpay);
$this->errorMessage = "微信返回:" . json_encode($refund_return); $this->errorMessage = "微信返回:" . json_encode($refund_return);
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) { if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
if($refund_return['err_code_des']=='订单已全额退款' || $refund_return['err_code_des']=='订单已Q68额退款'){
$this->errorMessage = date('Y-m-d') . $refund_return['err_code_des'] . $orderInfo['orderId'] . "\r\n";
return true;
}
$this->errorMessage = date('Y-m-d') . '微信退款操作执行失败!' . $orderInfo['orderId'] . "\r\n"; $this->errorMessage = date('Y-m-d') . '微信退款操作执行失败!' . $orderInfo['orderId'] . "\r\n";
return false; return false;
} }
} else if (intval($orderInfo['paymentType']) == ApiConst::alipay) { } else if (intval($orderInfo['paymentType']) == ApiConst::alipay) {
$aliPay = \Payment\Alipay::getInstance(); $aliPay = new \Payment\Alipay();
$return = $aliPay->refund($param); $return = $aliPay->refund($param);
unset($aliPay);
$this->errorMessage = "支付宝返回:" . json_encode($return); $this->errorMessage = "支付宝返回:" . json_encode($return);
$resultCode = $return->code; $resultCode = $return->code;
if (!empty($resultCode) && $resultCode == ApiConst::alipayRefundSuccess) { if (!empty($resultCode) && $resultCode == ApiConst::alipayRefundSuccess) {
...@@ -503,13 +510,20 @@ class RefundReturnModel extends \DAO\AbstractModel ...@@ -503,13 +510,20 @@ class RefundReturnModel extends \DAO\AbstractModel
return false; return false;
} }
} else if (intval($orderInfo['paymentType']) == ApiConst::wxProgram) { } else if (intval($orderInfo['paymentType']) == ApiConst::wxProgram) {
$wxpay = \Payment\WxLitePay::getInstance(); $wxpay = new \Payment\WxLitePay();
$refund_return = $wxpay->refund($param); $refund_return = $wxpay->refund($param);
unset($wxpay);
$this->errorMessage = "微信返回:" . json_encode($refund_return)."\r\n";
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) { if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
if($refund_return['err_code_des']=='订单已全额退款' || $refund_return['err_code_des']=='订单已Q68额退款'){
$this->errorMessage = date('Y-m-d') . $refund_return['err_code_des'] . $orderInfo['orderId'] . "\r\n";
return true;
}
$this->errorMessage = date('Y-m-d') . '微信退款操作执行失败!' . $orderInfo['orderId'] . "\r\n"; $this->errorMessage = date('Y-m-d') . '微信退款操作执行失败!' . $orderInfo['orderId'] . "\r\n";
return false; return false;
} }
} }
return true; return true;
} }
......
...@@ -121,7 +121,7 @@ class PBundlingModel extends \DAO\AbstractModel { ...@@ -121,7 +121,7 @@ class PBundlingModel extends \DAO\AbstractModel {
return $result; return $result;
} }
public function updateBlStorage($dataList){ public function updateBlStorage($dataList,$op = \Our\ApiConst::minus){
$datas = array_values($dataList); $datas = array_values($dataList);
$this->setDb(\Our\DbNameConst::masterDBConnectName); $this->setDb(\Our\DbNameConst::masterDBConnectName);
$error = 0; $error = 0;
...@@ -129,7 +129,7 @@ class PBundlingModel extends \DAO\AbstractModel { ...@@ -129,7 +129,7 @@ class PBundlingModel extends \DAO\AbstractModel {
$updateAllSql = $baseSql; $updateAllSql = $baseSql;
$dataIds = array(); $dataIds = array();
for ($i = 0; $i < count($datas); $i++) { for ($i = 0; $i < count($datas); $i++) {
$updateSql = \Our\Common::format(" WHEN {0} THEN bl_storage-{1} ", $datas[$i]['blId'], $datas[$i]['blStorage']); $updateSql = \Our\Common::format(" WHEN {0} THEN bl_storage{2}{1} ", $datas[$i]['blId'], $datas[$i]['blStorage'],\Our\ArrayConst::ops[$op]);
$dataIds[] = $datas[$i]['blId']; $dataIds[] = $datas[$i]['blId'];
$updateAllSql .= $updateSql; $updateAllSql .= $updateSql;
if ($i % 1000 == 0 && $i != 0) { if ($i % 1000 == 0 && $i != 0) {
......
File mode changed from 100755 to 100644
...@@ -113,7 +113,14 @@ class StoreModel extends \DAO\AbstractModel ...@@ -113,7 +113,14 @@ class StoreModel extends \DAO\AbstractModel
return $store; return $store;
} }
} }
public function getStoreFullList($where, $field) {
$this->setDb($this->dbName);
if(is_array($where)) {
$where = $this->db->getSqlWhereByArray($where);
}
$result = $this->db->from($this->_tableNameFull)->select($field)->where($where)->fetchAll();
return $result;
}
public function getInfoByMemberId($memberId, $field = '*', $isField = false, $db = DbNameConst::salveDBConnectName) public function getInfoByMemberId($memberId, $field = '*', $isField = false, $db = DbNameConst::salveDBConnectName)
{ {
$this->setDb($db); $this->setDb($db);
...@@ -627,4 +634,14 @@ class StoreModel extends \DAO\AbstractModel ...@@ -627,4 +634,14 @@ class StoreModel extends \DAO\AbstractModel
} }
return array('mchId'=>$mchId,'errorCode'=>$errorCode); return array('mchId'=>$mchId,'errorCode'=>$errorCode);
} }
/**
* 获取试用期快到期的店铺
*/
public function getTryExpireStore() {
$this->setDb($this->dbName);
$sql = "SELECT store.store_id,store.store_end_time,store.store_phone,store.store_name FROM han_store store LEFT JOIN han_store_class_pay_log store_class_pay_log on store.store_id = store_class_pay_log.store_id where ((unix_timestamp(now())+9*24*3600) < store.store_end_time and store.store_end_time <= (unix_timestamp(now())+10*24*3600) ) or ((unix_timestamp(now())+2*24*3600) < store.store_end_time and store.store_end_time <= (unix_timestamp(now())+3*24*3600) ) or ((unix_timestamp(now())+4*24*3600) < store.store_end_time and store.store_end_time <= (unix_timestamp(now())+5*24*3600) ) and store_class_pay_log.id IS NULL";
$query = $this->db->query($sql);
return $query->rows;
}
} }
...@@ -12,23 +12,27 @@ application.dispatcher.catchException = true ...@@ -12,23 +12,27 @@ application.dispatcher.catchException = true
; Admin模块用于后台管理 ; Admin模块用于后台管理
application.modules = Index,Api,Admin,Client application.modules = Index,Api,Admin,Client
redis.redisPublishName='redisPublish'
[productone : common] [productone : common]
; 数据库配置 ; 数据库配置
resources.database.params.driver = "pdo_mysql" resources.database.params.driver = "pdo_mysql"
resources.database.params.hostname = "rm-bp1j835zol35h2nm0.mysql.rds.aliyuncs.com" resources.database.params.hostname = "172.16.142.15"
resources.database.params.port = 3306 resources.database.params.port = 3306
resources.database.params.database = "qmcs" resources.database.params.database = "qmcs"
resources.database.params.username = "chenchuanwen" resources.database.params.username = "root"
resources.database.params.password = "!@#$%12345werty" resources.database.params.password = "!@#$%12345werty"
resources.database.params.charset = "UTF8" resources.database.params.charset = "UTF8"
resources.database.params.driver_options.1002 = "SET NAMES utf8" resources.database.params.driver_options.1002 = "SET NAMES utf8"
; ;
; ; 从库配置 ; ; 从库配置
resources.database.slave.params.driver = "pdo_mysql" resources.database.slave.params.driver = "pdo_mysql"
resources.database.slave.params.hostname = "rm-bp1j835zol35h2nm0.mysql.rds.aliyuncs.com" resources.database.slave.params.hostname = "172.16.142.13"
resources.database.slave.params.port = 3306 resources.database.slave.params.port = 3306
resources.database.slave.params.database = "qmcs" resources.database.slave.params.database = "qmcs"
resources.database.slave.params.username = "chenchuanwen" resources.database.slave.params.username = "root"
resources.database.slave.params.password = "!@#$%12345werty" resources.database.slave.params.password = "!@#$%12345werty"
resources.database.slave.params.charset = "UTF8" resources.database.slave.params.charset = "UTF8"
resources.database.slave.params.driver_options.1002 = "SET NAMES utf8" resources.database.slave.params.driver_options.1002 = "SET NAMES utf8"
...@@ -58,24 +62,24 @@ elastic.master.port="9200" ...@@ -58,24 +62,24 @@ elastic.master.port="9200"
elastic.master.scheme="http"; elastic.master.scheme="http";
password.key='~!@#$`1234qwertasdfgzxcvb'; password.key='~!@#$`1234qwertasdfgzxcvb';
;生产环境 //生产环境
[product : common] [product : common]
; 数据库配置 ; 数据库配置
resources.database.params.driver = "pdo_mysql" resources.database.params.driver = "pdo_mysql"
resources.database.params.hostname = "rm-bp1j835zol35h2nm0.mysql.rds.aliyuncs.com" resources.database.params.hostname = "127.0.0.1"
resources.database.params.port = 3306 resources.database.params.port = 3306
resources.database.params.database = "qmcs" resources.database.params.database = "qmcs"
resources.database.params.username = "chenchuanwen" resources.database.params.username = "root"
resources.database.params.password = "!@#$%12345werty" resources.database.params.password = "!@#$%12345werty"
resources.database.params.charset = "UTF8" resources.database.params.charset = "UTF8"
resources.database.params.driver_options.1002 = "SET NAMES utf8" resources.database.params.driver_options.1002 = "SET NAMES utf8"
; 从库配置 ; 从库配置
resources.database.slave.params.driver = "pdo_mysql" resources.database.slave.params.driver = "pdo_mysql"
resources.database.slave.params.hostname = "rm-bp1j835zol35h2nm0.mysql.rds.aliyuncs.com" resources.database.slave.params.hostname = "172.16.142.13"
resources.database.slave.params.port = 3306 resources.database.slave.params.port = 3306
resources.database.slave.params.database = "qmcs" resources.database.slave.params.database = "qmcs"
resources.database.slave.params.username = "chenchuanwen" resources.database.slave.params.username = "root"
resources.database.slave.params.password = "!@#$%12345werty" resources.database.slave.params.password = "!@#$%12345werty"
resources.database.slave.params.charset = "UTF8" resources.database.slave.params.charset = "UTF8"
resources.database.slave.params.driver_options.1002 = "SET NAMES utf8" resources.database.slave.params.driver_options.1002 = "SET NAMES utf8"
...@@ -224,73 +228,68 @@ push.open=1 ...@@ -224,73 +228,68 @@ push.open=1
push.user.service.id=293 push.user.service.id=293
push.user.service.type=7 push.user.service.type=7
password.key='~!@#$`1234qwertasdfgzxcvb'
[develop : common] [develop : common]
; 数据库配置 ; 数据库配置
;resources.database.params.driver = "pdo_mysql"
;resources.database.params.hostname = "192.168.1.201"
;resources.database.params.port = 3306
;resources.database.params.database = "qmcs"
;resources.database.params.username = "root"
;resources.database.params.password = "123456"
;resources.database.params.charset = "UTF8"
;resources.database.params.driver_options.1002 = "SET NAMES utf8"
resources.database.params.driver = "pdo_mysql" resources.database.params.driver = "pdo_mysql"
resources.database.params.hostname = "192.168.1.201" resources.database.params.hostname = "106.14.14.233"
resources.database.params.port = 3306 resources.database.params.port = 3306
resources.database.params.database = "qmcs" resources.database.params.database = "qmcs"
resources.database.params.username = "root" resources.database.params.username = "root"
resources.database.params.password = "123456" resources.database.params.password = "!@#$%12345werty"
resources.database.params.charset = "UTF8" resources.database.params.charset = "UTF8"
resources.database.params.driver_options.1002 = "SET NAMES utf8" resources.database.params.driver_options.1002 = "SET NAMES utf8"
; 从库配置 ; 从库配置
;resources.database.slave.params.driver = "pdo_mysql"
;resources.database.slave.params.hostname = "192.168.1.201"
;resources.database.slave.params.port = 3306
;resources.database.slave.params.database = "qmcs"
;resources.database.slave.params.username = "root"
;resources.database.slave.params.password = "123456"
;resources.database.slave.params.charset = "UTF8"
;resources.database.slave.params.driver_options.1002 = "SET NAMES utf8"
resources.database.slave.params.driver = "pdo_mysql" resources.database.slave.params.driver = "pdo_mysql"
resources.database.slave.params.hostname = "192.168.1.201" resources.database.slave.params.hostname = "106.14.14.233"
resources.database.slave.params.port = 3306 resources.database.slave.params.port = 3306
resources.database.slave.params.database = "qmcs" resources.database.slave.params.database = "qmcs"
resources.database.slave.params.username = "root" resources.database.slave.params.username = "root"
resources.database.slave.params.password = "123456" resources.database.slave.params.password = "!@#$%12345werty"
resources.database.slave.params.charset = "UTF8" resources.database.slave.params.charset = "UTF8"
resources.database.slave.params.driver_options.1002 = "SET NAMES utf8" resources.database.slave.params.driver_options.1002 = "SET NAMES utf8"
; mongodb push.clientHost="ws://192.168.80.18:9502"
resources.database.mongo.params.driver = "scram" ;redis.database.params.host = "127.0.0.1"
resources.database.mongo.params.hostname = "192.168.1.201" ;redis.database.params.port = "6379"
resources.database.mongo.params.port = 27017 ;redis.database.params.prefix = "qm_"
resources.database.mongo.params.database = "qmcs" redis.database.params.host = "106.14.14.233"
resources.database.mongo.params.username = "qmcs"
resources.database.mongo.params.password = "123456asdfgh"
resources.database.mongo.params.charset = "UTF8"
resources.database.mongo.params.driver_options.1002 = "SET NAMES utf8"
password.key='~!@#$`1234qwertasdfgzxcvb';
redis.database.params.host = "192.168.1.201"
redis.database.params.port = "6379" redis.database.params.port = "6379"
redis.database.params.prefix = "qm_" redis.database.params.prefix = "qm_"
redis.database.params.password = "" redis.database.params.password = "23456ertyu"
out.config="/data/config"
out.config="/data/config";
;锁文件
out.locks="/data/locks";
; redis配置 ; redis配置
push.user.service.id=293
push.user.service.type=7
;redis.database.params.password = "test" ;redis.database.params.password = "test"
;推送配置 ;推送配置
push.clientHost="ws://192.168.1.201:9502" push.clientHost="ws://192.168.80.18:9502"
push.host="192.168.1.201" push.host="192.168.80.18"
push.port="9503" push.port="9503"
push.open=1 push.open=1
push.user.service.id=293 password.key='~!@#$`1234qwertasdfgzxcvb';
push.user.service.type=7
elastic.master.host="192.168.1.201"
elastic.master.port="9200"
elastic.master.scheme="http";
;resources.database.params.hostname = "127.0.0.1"
;resources.database.params.database = "database"
;resources.database.params.username = "username"
;resources.database.params.password = "password"
[ccwdevelop : common] [ccwdevelop : common]
; 数据库配置 ; 数据库配置
resources.database.params.driver = "pdo_mysql" resources.database.params.driver = "pdo_mysql"
resources.database.params.hostname = "192.168.1.201" resources.database.params.hostname = "192.168.80.18"
resources.database.params.port = 3306 resources.database.params.port = 3306
resources.database.params.database = "qmcs_ccw" resources.database.params.database = "qmcs"
resources.database.params.username = "root" resources.database.params.username = "root"
resources.database.params.password = "123456" resources.database.params.password = "123456"
resources.database.params.charset = "UTF8" resources.database.params.charset = "UTF8"
...@@ -298,9 +297,9 @@ resources.database.params.driver_options.1002 = "SET NAMES utf8" ...@@ -298,9 +297,9 @@ resources.database.params.driver_options.1002 = "SET NAMES utf8"
; 从库配置 ; 从库配置
resources.database.slave.params.driver = "pdo_mysql" resources.database.slave.params.driver = "pdo_mysql"
resources.database.slave.params.hostname = "192.168.1.201" resources.database.slave.params.hostname = "192.168.80.18"
resources.database.slave.params.port = 3306 resources.database.slave.params.port = 3306
resources.database.slave.params.database = "qmcs_ccw" resources.database.slave.params.database = "qmcs"
resources.database.slave.params.username = "root" resources.database.slave.params.username = "root"
resources.database.slave.params.password = "123456" resources.database.slave.params.password = "123456"
resources.database.slave.params.charset = "UTF8" resources.database.slave.params.charset = "UTF8"
...@@ -308,11 +307,11 @@ resources.database.slave.params.driver_options.1002 = "SET NAMES utf8" ...@@ -308,11 +307,11 @@ resources.database.slave.params.driver_options.1002 = "SET NAMES utf8"
; 从库配置 ; 从库配置
resources.database.drawSource.params.driver = "pdo_mysql" resources.database.drawSource.params.driver = "pdo_mysql"
resources.database.drawSource.params.hostname = "192.168.1.201" resources.database.drawSource.params.hostname = "192.168.80.18"
resources.database.drawSource.params.port = 3306 resources.database.drawSource.params.port = 3306
resources.database.drawSource.params.database = "drawSource" resources.database.drawSource.params.database = "drawSource"
resources.database.drawSource.params.username = "root" resources.database.drawSource.params.username = "root"
resources.database.drawSource.params.password = "111111" resources.database.drawSource.params.password = "123456"
resources.database.drawSource.params.charset = "UTF8" resources.database.drawSource.params.charset = "UTF8"
resources.database.drawSource.params.driver_options.1002 = "SET NAMES utf8" resources.database.drawSource.params.driver_options.1002 = "SET NAMES utf8"
...@@ -328,10 +327,10 @@ resources.database.mongo.params.driver_options.1002 = "SET NAMES utf8" ...@@ -328,10 +327,10 @@ resources.database.mongo.params.driver_options.1002 = "SET NAMES utf8"
password.key='~!@#$`1234qwertasdfgzxcvb'; password.key='~!@#$`1234qwertasdfgzxcvb';
redis.database.params.host = "192.168.1.201" redis.database.params.host = "127.0.0.1"
redis.database.params.port = "6379" redis.database.params.port = "6379"
redis.database.params.prefix = "qm_" redis.database.params.prefix = "qm_"
redis.database.params.password = "" redis.database.params.password = "23456ertyu"
out.config="/data/config"; out.config="/data/config";
;锁文件 ;锁文件
...@@ -340,8 +339,8 @@ out.locks="/data/locks"; ...@@ -340,8 +339,8 @@ out.locks="/data/locks";
;redis.database.params.password = "test" ;redis.database.params.password = "test"
;推送配置 ;推送配置
push.clientHost="ws://192.168.1.201:9502" push.clientHost="ws://192.168.80.18:9502"
push.host="192.168.1.201" push.host="192.168.80.18"
push.port="9503" push.port="9503"
push.open=1 push.open=1
push.user.service.id=293 push.user.service.id=293
...@@ -399,12 +398,12 @@ elastic.master.host="192.168.1.201" ...@@ -399,12 +398,12 @@ elastic.master.host="192.168.1.201"
elastic.master.port="9200" elastic.master.port="9200"
elastic.master.scheme="http"; elastic.master.scheme="http";
[lyztest : common] [lyz : common]
; 数据库配置 ; 数据库配置
resources.database.params.driver = "pdo_mysql" resources.database.params.driver = "pdo_mysql"
resources.database.params.hostname = "127.0.0.1" resources.database.params.hostname = "127.0.0.1"
resources.database.params.port = 3306 resources.database.params.port = 3306
resources.database.params.database = "testqmcs" resources.database.params.database = "qmcs"
resources.database.params.username = "root" resources.database.params.username = "root"
resources.database.params.password = "123456" resources.database.params.password = "123456"
resources.database.params.charset = "UTF8" resources.database.params.charset = "UTF8"
...@@ -414,7 +413,7 @@ resources.database.params.driver_options.1002 = "SET NAMES utf8" ...@@ -414,7 +413,7 @@ resources.database.params.driver_options.1002 = "SET NAMES utf8"
resources.database.slave.params.driver = "pdo_mysql" resources.database.slave.params.driver = "pdo_mysql"
resources.database.slave.params.hostname = "127.0.0.1" resources.database.slave.params.hostname = "127.0.0.1"
resources.database.slave.params.port = 3306 resources.database.slave.params.port = 3306
resources.database.slave.params.database = "testqmcs" resources.database.slave.params.database = "qmcs"
resources.database.slave.params.username = "root" resources.database.slave.params.username = "root"
resources.database.slave.params.password = "123456" resources.database.slave.params.password = "123456"
resources.database.slave.params.charset = "UTF8" resources.database.slave.params.charset = "UTF8"
...@@ -446,58 +445,52 @@ elastic.master.host="192.168.1.201" ...@@ -446,58 +445,52 @@ elastic.master.host="192.168.1.201"
elastic.master.port="9200" elastic.master.port="9200"
elastic.master.scheme="http"; elastic.master.scheme="http";
[lyz : common] [lyztest : common]
; 数据库配置 ; 数据库配置
resources.database.params.driver = "pdo_mysql" resources.database.params.driver = "pdo_mysql"
resources.database.params.hostname = "106.14.14.233" resources.database.params.hostname = "127.0.0.1"
resources.database.params.port = 3306 resources.database.params.port = 3306
resources.database.params.database = "qmcs" resources.database.params.database = "testqmcs"
resources.database.params.username = "root" resources.database.params.username = "root"
resources.database.params.password = "!@#$%12345werty" resources.database.params.password = "123456"
resources.database.params.charset = "UTF8" resources.database.params.charset = "UTF8"
resources.database.params.driver_options.1002 = "SET NAMES utf8" resources.database.params.driver_options.1002 = "SET NAMES utf8"
; 从库配置 ; 从库配置
resources.database.slave.params.driver = "pdo_mysql" resources.database.slave.params.driver = "pdo_mysql"
resources.database.slave.params.hostname = "106.14.14.233" resources.database.slave.params.hostname = "127.0.0.1"
resources.database.slave.params.port = 3306 resources.database.slave.params.port = 3306
resources.database.slave.params.database = "qmcs" resources.database.slave.params.database = "testqmcs"
resources.database.slave.params.username = "root" resources.database.slave.params.username = "root"
resources.database.slave.params.password = "!@#$%12345werty" resources.database.slave.params.password = "123456"
resources.database.slave.params.charset = "UTF8" resources.database.slave.params.charset = "UTF8"
resources.database.slave.params.driver_options.1002 = "SET NAMES utf8" resources.database.slave.params.driver_options.1002 = "SET NAMES utf8"
; mongodb password.key='~!@#$`1234qwertasdfgzxcvb'
resources.database.mongo.params.driver = "scram"
resources.database.mongo.params.hostname = "106.14.14.233"
resources.database.mongo.params.port = 27017
resources.database.mongo.params.database = "qmcs"
resources.database.mongo.params.username = "qmcs"
resources.database.mongo.params.password = "123456asdfgh"
resources.database.mongo.params.charset = "UTF8"
resources.database.mongo.params.driver_options.1002 = "SET NAMES utf8"
redis.database.params.host = "127.0.0.1" redis.database.params.host = "127.0.0.1"
redis.database.params.port = "6379" redis.database.params.port = "6379"
redis.database.params.prefix = "qm_" redis.database.params.prefix = "qm_"
redis.database.params.password = "23456ertyu" ;redis.database.params.password = "23456ertyu"
out.config="/data/config"
out.config="/data/config";
;锁文件 ;锁文件
out.locks="/data/locks"; out.locks="/data/locks";
; redis配置 ; redis配置
;redis.database.params.password = "test" ;redis.database.params.password = "test"
;推送配置 ;推送配置
push.clientHost="ws://192.168.80.18:9502" push.clientHost="ws://192.168.80.134:9502"
push.host="127.0.0.1" push.host="192.168.134.18"
push.port="9503" push.port="9503"
push.open=1 push.open=1
push.user.service.id=293 push.user.service.id=293
push.user.service.type=7 push.user.service.type=7
password.key='~!@#$`1234qwertasdfgzxcvb' elastic.master.host="192.168.1.201"
elastic.master.port="9200"
elastic.master.scheme="http";
[linqing : common] [linqing : common]
; 数据库配置 ; 数据库配置
...@@ -545,4 +538,4 @@ elastic.master.scheme="http"; ...@@ -545,4 +538,4 @@ elastic.master.scheme="http";
;resources.database.params.hostname = "127.0.0.1" ;resources.database.params.hostname = "127.0.0.1"
;resources.database.params.database = "database" ;resources.database.params.database = "database"
;resources.database.params.username = "username" ;resources.database.params.username = "username"
;resources.database.params.password = "password" ;resources.database.params.password = "password"
\ No newline at end of file
...@@ -12,8 +12,7 @@ config.url.resourcesHost = "http://api.shenbd.com" ...@@ -12,8 +12,7 @@ config.url.resourcesHost = "http://api.shenbd.com"
config.url.userHost = "" config.url.userHost = ""
; ;
; ; oss 域名 ; ; oss 域名
config.url.ossHost = "https://img.shenbd.com" config.url.ossHost = "https://qmoss-01.oss-cn-hangzhou.aliyuncs.com"
;config.url.ossHost = "https://qmoss-01.oss-cn-hangzhou.aliyuncs.com"
; ;
; ;推送域名 ; ;推送域名
config.url.pushHost="172.16.142.15:9503"; config.url.pushHost="172.16.142.15:9503";
...@@ -37,8 +36,8 @@ config.url.resourcesHost = "http://api.shenbd.com" ...@@ -37,8 +36,8 @@ config.url.resourcesHost = "http://api.shenbd.com"
; 用户中心host ; 用户中心host
config.url.userHost = "" config.url.userHost = ""
config.url.ossHost = "https://img.shenbd.com" ; oss 域名
;config.url.ossHost = "https://qmoss-01.oss-cn-hangzhou.aliyuncs.com" config.url.ossHost = "https://qmoss-01.oss-cn-hangzhou.aliyuncs.com"
;推送域名 ;推送域名
config.url.pushHost="127.0.0.1:9503"; config.url.pushHost="127.0.0.1:9503";
...@@ -55,9 +54,9 @@ config.url.convert=/usr/local/bin/wkhtmltoimage ...@@ -55,9 +54,9 @@ config.url.convert=/usr/local/bin/wkhtmltoimage
config.url.resourcesHost = "http://apitest.shenbd.com" config.url.resourcesHost = "http://apitest.shenbd.com"
; 用户中心host ; 用户中心host
config.url.userHost = "" config.url.userHost = ""
config.url.ossHost = "https://imgpre.shenbd.com"
; oss 域名 ; oss 域名
;config.url.ossHost = "https://qmoss-01.oss-cn-hangzhou.aliyuncs.com" config.url.ossHost = "https://qmoss-01.oss-cn-hangzhou.aliyuncs.com"
;推送域名 ;推送域名
config.url.pushHost="127.0.0.1:9503"; config.url.pushHost="127.0.0.1:9503";
...@@ -75,9 +74,9 @@ config.url.source="/www/web/testadmin_shenbd_com/public_html/data/upload/" ...@@ -75,9 +74,9 @@ config.url.source="/www/web/testadmin_shenbd_com/public_html/data/upload/"
config.url.resourcesHost = "http://apitest.qm.com" config.url.resourcesHost = "http://apitest.qm.com"
; 用户中心host ; 用户中心host
config.url.userHost = "" config.url.userHost = ""
config.url.ossHost = "https://img.shenbd.com"
; oss 域名 ; oss 域名
;config.url.ossHost = "http://qmoss-01.oss-cn-hangzhou.aliyuncs.com" config.url.ossHost = "http://qmoss-01.oss-cn-hangzhou.aliyuncs.com"
;推送域名 ;推送域名
config.url.pushHost="127.0.0.1:9503"; config.url.pushHost="127.0.0.1:9503";
...@@ -91,16 +90,11 @@ config.url.resourcesHost = "http://test.qm.com" ...@@ -91,16 +90,11 @@ config.url.resourcesHost = "http://test.qm.com"
config.url.userHost = "" config.url.userHost = ""
; oss 域名 ; oss 域名
config.url.ossHost = "https://img.shenbd.com" config.url.ossHost = "http://qmoss-01.oss-cn-hangzhou.aliyuncs.com"
;推送域名 ;推送域名
config.url.pushHost="127.0.0.1:9503"; config.url.pushHost="127.0.0.1:9503";
config.url.indexUrl="/www/web/test_qm_com/application/library/React"
config.url.libary="/www/web/test_qm_com/application/library"
config.url.source="/www/web/test_qm_com/public_html/data/upload/"
;config.url.source="E:/WAMP/www/www.qm.com/data/upload/" ;config.url.source="E:/WAMP/www/www.qm.com/data/upload/"
; 文件目录 ; 文件目录
;店铺图片报错目录 ;店铺图片报错目录
...@@ -122,10 +116,10 @@ config.url.resourcesHost = "http://local.qm.com" ...@@ -122,10 +116,10 @@ config.url.resourcesHost = "http://local.qm.com"
config.url.userHost = "" config.url.userHost = ""
; oss 域名 ; oss 域名
config.url.ossHost = "https://imgpre.shenbd.com" config.url.ossHost = "http://qmoss-01.oss-cn-hangzhou.aliyuncs.com"
;推送域名 ;推送域名
config.url.pushHost="192.168.1.201:9503"; config.url.pushHost="127.0.0.1:9503";
config.url.convert="/usr/local/bin/wkhtmltoimage"; config.url.convert="/usr/local/bin/wkhtmltoimage";
......
...@@ -43,7 +43,12 @@ class cliOrderClose extends basecli ...@@ -43,7 +43,12 @@ class cliOrderClose extends basecli
protected function autoCloseOrder(){ protected function autoCloseOrder(){
$orderService=\Business\Order\OrderServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName); $orderService=\Business\Order\OrderServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$orderService->baseDir= \Our\Common::getConfig('out.config'); $orderService->baseDir= \Our\Common::getConfig('out.config');
$orderService->changeOrderStatusSecond(); if($this->aArgv[1]){
$orderService->changeOrderStatusSecond(true);
}else{
$orderService->changeOrderStatusSecond();
}
$messageService=\Business\Message\MessageServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName); $messageService=\Business\Message\MessageServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$messageService->addMessageCenterToDb(); $messageService->addMessageCenterToDb();
} }
...@@ -61,7 +66,7 @@ class cliOrderClose extends basecli ...@@ -61,7 +66,7 @@ class cliOrderClose extends basecli
echo '****create dir fail ****'; echo '****create dir fail ****';
exit; exit;
} }
$this->lockFileName = $lockDir .DS.'close.locks'; $this->lockFileName = $lockDir .DS.'closeSecond.locks';
if( file_exists( $this->lockFileName ) ) if( file_exists( $this->lockFileName ) )
{ {
$stat = stat($this->lockFileName); $stat = stat($this->lockFileName);
......
...@@ -50,7 +50,7 @@ class cliOrderEvaluate extends basecli ...@@ -50,7 +50,7 @@ class cliOrderEvaluate extends basecli
echo "*** Debug mode ***\n"; echo "*** Debug mode ***\n";
} }
// Step: 02 检查是否已有相同CLI在运行中 // Step: 02 检查是否已有相同CLI在运行中
$lockDir=$this->_getBaseFileName('orderEvaluate'); $lockDir=$this->_getBaseFileName('order');
if(!$this->mkdirs($lockDir)){ if(!$this->mkdirs($lockDir)){
echo '****create dir fail ****'; echo '****create dir fail ****';
exit; exit;
......
...@@ -50,7 +50,7 @@ class cliSaleOrder extends basecli ...@@ -50,7 +50,7 @@ class cliSaleOrder extends basecli
echo "*** Debug mode ***\n"; echo "*** Debug mode ***\n";
} }
// Step: 02 检查是否已有相同CLI在运行中 // Step: 02 检查是否已有相同CLI在运行中
$lockDir=$this->_getBaseFileName('orderSaleGoods'); $lockDir=$this->_getBaseFileName('order');
if(!$this->mkdirs($lockDir)){ if(!$this->mkdirs($lockDir)){
echo '****create dir fail ****'; echo '****create dir fail ****';
exit; exit;
......
...@@ -8,8 +8,6 @@ ...@@ -8,8 +8,6 @@
define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../../../')); //指向public的上一级 define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../../../')); //指向public的上一级
require_once APPLICATION_PATH . '/scripts/crontab/common.php'; require_once APPLICATION_PATH . '/scripts/crontab/common.php';
$conf = \Yaf\Registry::get('config')->get('redis.database.params'); $conf = \Yaf\Registry::get('config')->get('redis.database.params');
$http = new swoole_http_server("0.0.0.0", 9501); $http = new swoole_http_server("0.0.0.0", 9501);
$http->on('request', function ($request, $response) { $http->on('request', function ($request, $response) {
try{ try{
......
<?php
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 bridgeStart
{
/* config */
const LISTEN = "tcp://192.168.2.15:5555";
const MAXCONN = 100;
const pidfile = __CLASS__;
const uid = 81;
const gid = 81;
/**/
protected $pool = NULL;
protected $zmq = NULL;
public function __construct()
{
$this->pidfile = '/var/run/' . self::pidfile . '.pid';
}
private function daemon()
{
if (file_exists($this->pidfile)) {
echo "The file $this->pidfile exists.\n";
exit();
}
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
} else if ($pid) {
// we are the parent
//pcntl_wait($status); //Protect against Zombie children
exit($pid);
} else {
// we are the child
file_put_contents($this->pidfile, getmypid());
posix_setuid(self::uid);
posix_setgid(self::gid);
return (getmypid());
}
}
public function callback($instance,$channelName,$message){
$orderService=\Business\Order\OrderServiceModel::getInstance();
$orderService->testPush($message);
}
protected function status(){
if (file_exists($this->pidfile)) {
$pid = file_get_contents($this->pidfile);
printf("%s already running, pid = %s\n", $this->argv[0], $pid);
}else{
printf("%s haven't running\n", $this->argv[0]);
}
}
private function start()
{
$pid = $this->daemon();
$conf = \Yaf\Registry::get('config')->get('redis.database.params');
$http = new swoole_http_server("0.0.0.0", 9501);
$http->on('request', function ($request, $response) {
try{
$respData=$request->post;
// echo json_encode($respData);
if(isset($respData['type'])&&$respData['type']==1){
$info=$respData['content'];
$memberDao=$info['className']::getInstance(\Our\DbNameConst::masterDBConnectName);
echo json_encode($info);
if(empty($info['params'])){
$res=call_user_func_array(array($memberDao,$info['method']),array());
}else{
$res=call_user_func_array(array($memberDao,$info['method']),$info['params']);
}
$res=(isset($res)&&!empty($res))?$res:false;
unset($memberDao);
\Mysql\LinkMySQLModel::unsetDbConecet();
if($res!==false){
echo 'success';
$response->end(json_encode(array('status'=>1,'message'=>'执行成功','data'=>$res)));
}else{
echo 'fail1';
$response->end(json_encode(array('status'=>0,'message'=>'执行失败')));
}
}else{
echo 'fail2';
$response->end(json_encode(array('status'=>0,'message'=>'执行失败')));
}
}catch(Exception $ex){
throw new Exception($ex->getMessage(),$ex->getCode());
}
});
$http->start();
}
private function reload(){
if (file_exists($this->pidfile)) {
$pid = file_get_contents($this->pidfile);
//posix_kill(posix_getpid(), SIGHUP);
posix_kill($pid, SIGHUP);
}
}
protected function restart(){
$this->stop();
sleep(1);
$this->start();
}
private function stop()
{
if (file_exists($this->pidfile)) {
$pid = file_get_contents($this->pidfile);
posix_kill($pid, 9);
unlink($this->pidfile);
}
}
private function help($proc)
{
printf("%s start | stop | help | restart | reload \n", $proc);
}
private $argv;
public function main($argv)
{
$this->argv=$argv;
if (count($argv) < 2) {
printf("please input help parameter\n");
exit();
}
if ($argv[1] === 'stop') {
$this->stop();
} else if ($argv[1] === 'start') {
$this->start();
} else if($argv[1] === 'restart'){
$this->restart();
}else if($argv[1] === 'status'){
$this->status();
}else if($argv[1]==='reload'){
$this->reload();
}
else{
$this->help($argv[0]);
}
}
}
$cgse = new bridgeStart();
$cgse->main($argv);
\ No newline at end of file
<?php
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);
//发布
//$conf = \Yaf\Registry::get('config')->get('redis.database.params');
//$redis=new Redis();
//$redis->connect($conf['host'], $conf['port']);
//if(!empty($conf['password'])){
// $redis->auth($conf['password']);
//}
//$message=array('abd','happy New Year');
//$message=json_encode($message);
//$ret=$redis->publish('redisPublish',$message);
\Our\Common::redisPublish('\Business\Order\OrderServiceModel','testPush',array('happy New Year'));
...@@ -42,11 +42,43 @@ class runRedisPush ...@@ -42,11 +42,43 @@ class runRedisPush
return (getmypid()); return (getmypid());
} }
} }
public function callback($instance,$channelName,$message){
try{
$message=json_decode($message,true);
$callInstance=$message['className']::getInstance(\Our\DbNameConst::masterDBConnectName);
echo json_encode($message)."\r\n";
if(empty($message['params'])){
$res=call_user_func_array(array($callInstance,$message['method']),array());
}else{
$res=call_user_func_array(array($callInstance,$message['method']),$message['params']);
}
$res=(isset($res)&&!empty($res))?$res:false;
if($res!==false){
echo 'success'."\r\n";
}else{
echo 'fail1'."\r\n";
}
unset($callInstance);
\Mysql\LinkMySQLModel::unsetDbConecet();
}catch(Exception $ex){
echo $ex->getMessage();
}
// $orderService=\Business\Order\OrderServiceModel::getInstance();
// $orderService->testPush($message);
}
protected function status(){
if (file_exists($this->pidfile)) {
$pid = file_get_contents($this->pidfile);
printf("%s already running, pid = %s\n", $this->argv[0], $pid);
}else{
printf("%s haven't running\n", $this->argv[0]);
}
}
private function start() private function start()
{ {
$pid = $this->daemon(); $pid = $this->daemon();
$conf = \Yaf\Registry::get('config')->get('redis.database.params'); $conf = \Yaf\Registry::get('config')->get('redis.database.params');
$redisPublishName=\Yaf\Registry::get('config')->get('redis.redisPublishName');
$redis=new Redis(); $redis=new Redis();
$redis->connect($conf['host'], $conf['port']); $redis->connect($conf['host'], $conf['port']);
if(!empty($conf['password'])){ if(!empty($conf['password'])){
...@@ -54,14 +86,20 @@ class runRedisPush ...@@ -54,14 +86,20 @@ class runRedisPush
} }
//ini_set('default_socket_timeout', -1);(所有长连接不超时) //ini_set('default_socket_timeout', -1);(所有长连接不超时)
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1); $redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
$result=$redis->subscribe(array('redisPublish'), 'callback'); $result=$redis->subscribe(array($redisPublishName), array($this,'callback'));
function printTest($meg){
echo $meg.'213'; }
} private function reload(){
function callback($instance,$channelName,$message){ if (file_exists($this->pidfile)) {
printTest($message); $pid = file_get_contents($this->pidfile);
//posix_kill(posix_getpid(), SIGHUP);
posix_kill($pid, SIGHUP);
} }
} }
protected function restart(){
$this->stop();
$this->start();
}
private function stop() private function stop()
{ {
...@@ -75,11 +113,12 @@ class runRedisPush ...@@ -75,11 +113,12 @@ class runRedisPush
private function help($proc) private function help($proc)
{ {
printf("%s start | stop | help \n", $proc); printf("%s start | stop | help | restart | reload \n", $proc);
} }
private $argv;
public function main($argv) public function main($argv)
{ {
$this->argv=$argv;
if (count($argv) < 2) { if (count($argv) < 2) {
printf("please input help parameter\n"); printf("please input help parameter\n");
exit(); exit();
...@@ -89,7 +128,14 @@ class runRedisPush ...@@ -89,7 +128,14 @@ class runRedisPush
$this->stop(); $this->stop();
} else if ($argv[1] === 'start') { } else if ($argv[1] === 'start') {
$this->start(); $this->start();
} else { } else if($argv[1] === 'restart'){
$this->restart();
}else if($argv[1] === 'status'){
$this->status();
}else if($argv[1]==='reload'){
$this->reload();
}
else{
$this->help($argv[0]); $this->help($argv[0]);
} }
} }
......
...@@ -7,4 +7,5 @@ ...@@ -7,4 +7,5 @@
define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../../../')); //指向public的上一级 define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../../../')); //指向public的上一级
require APPLICATION_PATH . '/scripts/crontab/common.php'; require APPLICATION_PATH . '/scripts/crontab/common.php';
\Business\Store\StoreServiceModel::getInstance()->pendingItemsInform(); \Business\Store\StoreServiceModel::getInstance()->pendingItemsInform();
echo '发送成功'; echo '发送成功';
\ No newline at end of file
<?php
/**
* 签约分类快到期通知
* 执行时间:每天9:00
*/
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 cliSaleOrder 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 signedClassExpireInform(){
\Business\Store\StoreServiceModel::getInstance()->signedClassExpireInform();
}
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('store');
if(!$this->mkdirs($lockDir)){
echo '****create dir fail ****';
exit;
}
$this->lockFileName = $lockDir .'/signedClassExpireInform.locks';
if( file_exists( $this->lockFileName ) )
{
$stat = stat($this->lockFileName);
if( (TIMESTAMP - $stat['mtime']) > 3600 )
{
echo "文件被锁超过3600秒,被强制删除";
@unlink($this->lockFileName);
}
else
{
$this->halt( '[' . date('Y-m-d H:i:s') .'] The CLI is running'."\n");
}
}
$this->bDoUnLock = true;
file_put_contents($this->lockFileName ,"running" ); // CLI 独占锁
$this->signedClassExpireInform();
echo '签约分类到期短信发送成功'."\r\n";
}
}
$oCli = new cliSaleOrder(TRUE);
EXIT;
<?php
/**
* 试用快到期通知
* 执行时间:每天9:00
*/
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 cliSaleOrder 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 tryExpireInform(){
\Business\Store\StoreServiceModel::getInstance()->tryExpireInform();
}
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('store');
if(!$this->mkdirs($lockDir)){
echo '****create dir fail ****';
exit;
}
$this->lockFileName = $lockDir .'/tryExpireInform.locks';
if( file_exists( $this->lockFileName ) )
{
$stat = stat($this->lockFileName);
if( (TIMESTAMP - $stat['mtime']) > 3600 )
{
echo "文件被锁超过3600秒,被强制删除";
@unlink($this->lockFileName);
}
else
{
$this->halt( '[' . date('Y-m-d H:i:s') .'] The CLI is running'."\n");
}
}
$this->bDoUnLock = true;
file_put_contents($this->lockFileName ,"running" ); // CLI 独占锁
$this->tryExpireInform();
echo '试用到期短信发送成功'."\r\n";
}
}
$oCli = new cliSaleOrder(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