Commit a90ec52d authored by wwccw0591's avatar wwccw0591

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

parents 1bf0f62d 25d2b16c
......@@ -58,11 +58,14 @@ class MemberController extends \Our\Controller_AbstractApi {
* 取消第三方绑定
*/
public function cancelBindingAction(){
$data = $this->req[\Our\NameConst::data];
$this->memberService->cancelBinding($data,$this->memberId);
if($data['userType']==\Our\ApiConst::userFromWx){
$userToken=$this->memberService->getWxUserToken($this->memberId);
if(!empty($userToken)){
$this->updateOldLoginKey($userToken);
}
}
$this->success(new stdClass(),\Our\DescribeConst::cancelBindingSuccess,\Our\DescribeConst::cancelBindingSuccess);
}
......@@ -143,5 +146,4 @@ class MemberController extends \Our\Controller_AbstractApi {
$this->success(new stdClass(),\Our\DescribeConst::bindMobileForWxSuccess,\Our\DescribeConst::bindMobileForWxSuccess);
}
}
......@@ -18,14 +18,7 @@ class UserController extends \Our\Controller_AbstractIndex {
$login=LoginV2Model::getInstance();
echo $login->login();
}
private function updateOldLoginKey($token){
$params['authSign']=md5($token.\Our\SecretKeys::authKey);
$params['key']=$token;
$paramsStr=http_build_query($params);
$domain= Bootstrap::getUrlIniConfig('resourcesHost');
$getUrl=$domain.\Our\PathConst::authInfoOtherLogin.'?'.$paramsStr;
file_get_contents($getUrl);
}
/**
* 用户登录
*
......
......@@ -2,6 +2,9 @@
namespace JPush;
use InvalidArgumentException;
use Our\ApiConst;
use Our\ArrayConst;
use Our\DescribeConst;
use Our\SecretKeys;
class ClientPush
......@@ -31,8 +34,38 @@ class ClientPush
}
return true;
}
private function getMessageType($type){
$baseTitle=DescribeConst::appName;
switch($type){
case ApiConst::systemMessageType:$baseTitle=$baseTitle.ArrayConst::messageName[ApiConst::systemMessageType];break;
case ApiConst::orderMessageType:$baseTitle=$baseTitle.ArrayConst::messageName[ApiConst::orderMessageType];break;
case ApiConst::deliveryMessageType:$baseTitle=$baseTitle.ArrayConst::messageName[ApiConst::deliveryMessageType];break;
case ApiConst::storeMessageType:$baseTitle=$baseTitle.ArrayConst::messageName[ApiConst::storeMessageType];break;
case ApiConst::memberMessageType:$baseTitle=$baseTitle.ArrayConst::messageName[ApiConst::memberMessageType];break;
default:$baseTitle;break;
}
return $baseTitle;
}
private function getMessageContent($message){
$messageContent='';
switch($message['type']){
case ApiConst::reacheCallMessage:
case ApiConst::refundReturnMessage:
case ApiConst::deliveryChangeMessage:
case ApiConst::autoSendMessage:
case ApiConst::orderStateChangeMessage:
case ApiConst::orderReceiveMessage:
case ApiConst::orderMessageType:$messageContent=$message['content'];break;
case ApiConst::onePictureMessage:$messageContent=DescribeConst::imageMessage;break;
}
return $messageContent;
}
public function push($pushData)
{
$title=$this->getMessageType($pushData['fromType']);
$messageContent=$this->getMessageContent($pushData['message']);
try {
$response = $this->client->push()
->setPlatform(array('ios', 'android'))
......@@ -41,36 +74,27 @@ class ClientPush
// 即是说一般情况下,下面三个方法和没有列出的 addTagAnd 一共四个,只适用一个便可满足大多数的场景需求
// ->addAlias('alias')
->addTag(array('tag1', 'tag2'))
// ->addRegistrationId($registration_id)
// ->addTag(array('tag1', 'tag2'))
->addRegistrationId($pushData['toId'])
->setNotificationAlert('Hi, JPush')
->iosNotification('Hello IOS', array(
->setNotificationAlert($title)
->iosNotification($messageContent, array(
'sound' => 'sound.caf',
// 'badge' => '+1',
// 'content-available' => true,
// 'mutable-content' => true,
'category' => 'jiguang',
'extras' => array(
'key' => 'value',
'jiguang'
),
'category' => 'shenbd',
'extras' => $pushData,
))
->androidNotification('Hello Android', array(
'title' => 'hello jpush',
->androidNotification($messageContent, array(
'title' => $title,
// 'builder_id' => 2,
'extras' => array(
'key' => 'value',
'jiguang'
),
'extras' => $pushData,
))
->message('message content', array(
->message($messageContent, array(
'title' => 'hello jpush',
// 'content_type' => 'text',
'extras' => array(
'key' => 'value',
'jiguang'
),
'content_type' => $pushData['type'],
'extras' => $pushData,
))
->options(array(
// sendno: 表示推送序号,纯粹用来作为 API 调用标识,
......
......@@ -82,6 +82,15 @@ class ApiConst
//普通用户消息类型
const memberMessageType = 5;
const ordinaryMessage=0;
const onePictureMessage=21;
const reacheCallMessage=1;
const refundReturnMessage=8;
const deliveryChangeMessage=12;
const autoSendMessage=13;
const orderStateChangeMessage=14;
const orderReceiveMessage=15;
const closeMessage=-1;
const openMessae=1;
//消息状态
......
......@@ -21,7 +21,9 @@ class ArrayConst
const messageName=array(
ApiConst::systemMessageType=>"系统消息",
ApiConst::orderMessageType=>"订单消息",
ApiConst::deliveryMessageType=>"订单消息",
ApiConst::deliveryMessageType=>"快递消息",
ApiConst::storeMessageType=>"店铺消息",
ApiConst::memberMessageType=>"用户消息",
);
//配送方式
const refundShippingType=array(
......
......@@ -96,4 +96,14 @@ abstract class Controller_Abstract extends \Yaf\Controller_Abstract {
[NameConst::pageSize]:($pageSize>0?$pageSize:ApiConst::pageSize);
}
protected function updateOldLoginKey($token){
$params['authSign']=md5($token.\Our\SecretKeys::authKey);
$params['key']=$token;
$paramsStr=http_build_query($params);
$domain= \Bootstrap::getUrlIniConfig('resourcesHost');
$getUrl=$domain.\Our\PathConst::authInfoOtherLogin.'?'.$paramsStr;
file_get_contents($getUrl);
}
}
......@@ -9,7 +9,7 @@ namespace Our;
class DescribeConst
{
const appName='身边店';
//member表字段名
const successMessage = '操作成功';
//登陆成功提示
......@@ -164,5 +164,7 @@ class DescribeConst
const cancelOrderMessage='十分钟未支付,自动取消订单';
const anonymity = '匿名用户';
const imageMessage='【图片】';
}
?>
\ No newline at end of file
......@@ -23,7 +23,7 @@ class SettingServiceModel extends \Business\AbstractModel{
public function getSetting(){
$settingDAO = \DAO\SettingModel::getInstance();
$setting = $settingDAO->getListCache(array('unpayed_order_close_minutes','unreceived_order_close_minutes'));
$setting = $settingDAO->getListCache(array('unpayed_order_close_minutes','unreceived_order_close_minutes','service'));
$return = array();
if($setting['unpayed_order_close_minutes']){
$return['unpayedOrderColseTime'] = (int)$setting['unpayed_order_close_minutes'];
......@@ -31,6 +31,9 @@ class SettingServiceModel extends \Business\AbstractModel{
if($setting['unreceived_order_close_minutes']){
$return['unreceivedOrderColseTime'] = (int)$setting['unreceived_order_close_minutes'];
}
if($setting['service']){
$return['service'] = unserialize($setting['service']);
}
return $return;
}
private static $_instance = null;
......
......@@ -318,6 +318,7 @@ class MessageServiceModel extends \Business\AbstractModel
$message['gmtCreate'] = TIMESTAMP;
$message['isRead'] = ApiConst::unread;
$message['type'] = (int)$message['type'];
$message['content']=base64_encode($message['content']);
$serializeMessage = serialize($message);
//将消息添加到表messageHistory
$mesageHistory['fromId'] = $fromId;
......@@ -376,6 +377,7 @@ class MessageServiceModel extends \Business\AbstractModel
$redis->auth($conf['password']);
}
while ($center = $redis->lPop('message_center')) {
$redis->rPush('push_center',$center);
$addData = unserialize($center);
$addData['message'] = unserialize($addData['message']);
$this->addMessage($addData['fromId'], $addData['fromUserId'], $addData['fromUserName'], $addData['fromType'], $addData['message'], $addData['toId'], $addData['toUserId'], $addData['toUserName'], $addData['toType'], $addData['id']);
......
......@@ -321,9 +321,12 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
}
return $return;
}
public function getOrderIndexWhere($storeId, $keyword, $pageIndex, $pageSize)
public function getOrderIndexWhere($storeId, $keyword, $pageIndex, $pageSize,$orderState=false)
{
$query1[] = array('match' => array('storeId' => $storeId));
if($orderState!=false){
$query1[] = array('match' => array('orderState' => $orderState));
}
$res1['must'][0] = $query1;
$query2[] = array('match' => array('goodsName' => $keyword));
$query2[] = array('wildcard' => array('orderSn' => "*{$keyword}*"));
......@@ -350,7 +353,8 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
$allQuery = array();
$allQuery['bool'] = array();
if (!empty($keyword)) {
$where= $this->getOrderIndexWhere($storeId,$keyword,$pageIndex,$pageSize);
$orderState=!empty($orderState)?$orderState:false;
$where= $this->getOrderIndexWhere($storeId,$keyword,$pageIndex,$pageSize,$orderState);
} else {
$where = 'han_order.store_id=' . $storeId;
if (!empty($orderState)) {
......@@ -629,7 +633,7 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
$this->taskSize = PageConst::taskPageSize;
$elasticsTool = ElasticsToolModel::getInstance(NameConst::ordersIndex);
do {
$where = Common::format(" han_order.add_time>={0} and han_order.add_time<{1} ", $beginTime, TIMESTAMP);
$where = Common::format(" han_order.gmt_update>={0} and han_order.gmt_update<{1} ", $beginTime, TIMESTAMP);
// $orders = $this->getRetrunDatas($where, $this->taskIndex, $this->taskSize);
// if (!empty($orders['orders'])) {
// $this->taskIndex++;
......
......@@ -146,6 +146,10 @@ class MemberServiceModel extends \Business\AbstractModel
'sellerId'=>$member['sellerId'],
'diliverymanId'=>$member['diliverymanId'],
);
$returnMember['isWeiboBind'] = \Our\ApiConst::zero;
$returnMember['isQqBind'] = \Our\ApiConst::zero;
$returnMember['isWeiboBind'] = \Our\ApiConst::zero;
$memberMappingDao = \DAO\MemberMappingModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$memberMappingList = $memberMappingDao->getAvailableMemberMappingList($memberId);
foreach($memberMappingList as $memberMapping){
......@@ -154,25 +158,11 @@ class MemberServiceModel extends \Business\AbstractModel
}else if($memberMapping['user_type'] == \Our\ApiConst::userFromQQ){
$returnMember['isQqBind'] = \Our\ApiConst::one;
}else if($memberMapping['user_type'] == \Our\ApiConst::wechatUserType){
//$returnMember['isWechatBind'] = \Our\ApiConst::one;
$returnMember['isWxBind'] = \Our\ApiConst::one;
}else if($memberMapping['user_type'] == \Our\ApiConst::userFromWx){
$returnMember['isWxBind'] = \Our\ApiConst::one;
}
}
if(!isset($returnMember['isWeiboBind'])){
$returnMember['isWeiboBind'] = \Our\ApiConst::zero;
}
if(!isset($returnMember['isQqBind'])){
$returnMember['isQqBind'] = \Our\ApiConst::zero;
}
/*if(!isset($returnMember['isWechatBind'])){
$returnMember['isWechatBind'] = \Our\ApiConst::zero;
}*/
if(!isset($returnMember['isWxBind'])){
$returnMember['isWxBind'] = \Our\ApiConst::zero;
}
return $returnMember;
}
......@@ -603,7 +593,7 @@ class MemberServiceModel extends \Business\AbstractModel
$memberMappingDao = \DAO\MemberMappingModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$memberMappingDao->validCancelMapping($data,$memberId);
$where['member_id'] = $memberId;
$where['user_type'] = ($data['userType']==\Our\ApiConst::userFromWx)?array('in',array(\Our\ApiConst::userFromWx,\Our\ApiConst::wechatUserType)):$data['userType'];
$where['user_type'] = ($data['userType']==\Our\ApiConst::userFromWx||$data['userType']==\Our\ApiConst::wechatUserType)?array('in',array(\Our\ApiConst::userFromWx,\Our\ApiConst::wechatUserType)):$data['userType'];
$result = $memberMappingDao->del($where);
if(!$result){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::cancelBindingUserFailed);
......
......@@ -24,6 +24,7 @@ class CouponModel extends \DAO\AbstractModel {
protected $_primaryKey = 'id';
protected $availStoreIndexField = 'id,type,FORMAT(cash_money/100,2) as cash_money,FORMAT(order_amount/100,2) as order_amount,discount,store_id,coupon_type,is_overlay,start_time,end_time,gift_coupon_id';
protected $availTitleField = 'id,type,FORMAT(cash_money/100,2) as cash_money,FORMAT(order_amount/100,2) as order_amount,discount,store_id,coupon_type,is_overlay,start_time,end_time,gift_coupon_id,ids';
protected $availCartStoreIndexField = 'id,type,FORMAT(cash_money/100,2) as cash_money,FORMAT(order_amount/100,2) as order_amount,discount,store_id,coupon_type,is_overlay,start_time,end_time,ids,gift_coupon_id,gift_goods_ids';
public function init(){
......@@ -149,7 +150,7 @@ class CouponModel extends \DAO\AbstractModel {
* @throws \Our\Exception
*/
public function getStorePromotionCouponList($storeId){
$field = $this->availStoreIndexField;
$field = $this->availTitleField;
$where = ' and store_id ='.$storeId.' and type<>1';
$this->setDb($this->dbName);
//$coupons = $this->getOnlineCouponList($where,$field);
......@@ -166,22 +167,20 @@ class CouponModel extends \DAO\AbstractModel {
if($storeClasses){
$storeClassIds = array_column($storeClasses,'gc_id');
}
$storeCouponGoodsClassDao = \DAO\GoodsClass\StoreCouponGoodsClassModel::getInstance();
$result = array();
foreach($coupons as $coupon){
if(!($coupon['start_time']<=TIMESTAMP&&$coupon['end_time']>TIMESTAMP)){
continue;
}
if($coupon['type']==\Our\ApiConst::goodsClassCoupon){ //指定品类优惠券,需要判断该优惠券对应分类店铺是否在经营
if($storeClassIds){
$gcIds = $storeCouponGoodsClassDao->getGoodsClassIdsByCouponId($coupon['id']);
if(!$gcIds){
continue;
}
if($storeClassIds&&$coupon['ids']){
$gcIds = explode(',',trim($coupon['ids'],','));
$gcIdList = array_intersect($storeClassIds,$gcIds);
if(!$gcIdList){
if(count($gcIdList)!=count($gcIds)){
continue;
}
}else{
continue;
}
}
$temp = array();
......
......@@ -113,8 +113,11 @@ class MemberMappingModel extends \DAO\AbstractModel{
if(!$where['userType']){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyUserType);
}
if(!in_array($where['userType'],array_keys(\Our\ArrayConst::userType))){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongUserType);
}
$condition['member_id'] = $memberId;
$condition['user_type'] = ($where['userType']==\Our\ApiConst::userFromWx)?array('in',array(\Our\ApiConst::userFromWx,\Our\ApiConst::wechatUserType)):$where['userType'];
$condition['user_type'] = ($where['userType']==\Our\ApiConst::userFromWx||$where['userType']==\Our\ApiConst::wechatUserType)?array('in',array(\Our\ApiConst::userFromWx,\Our\ApiConst::wechatUserType)):$where['userType'];
$result = $this->find($condition,'member_id');
if(!$result){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::bindingUserNotExist);
......@@ -125,10 +128,11 @@ class MemberMappingModel extends \DAO\AbstractModel{
public function del($where){
$this->setDb(\Our\DbNameConst::masterDBConnectName);
$condition = $where ;
if(is_array($where)){
$where = $this->db->getSqlWhereByArray($where);
$condition = $this->db->getSqlWhereByArray($where);
}
$result = $this->db->delete($this->_tableName)->where($where)->execute();
$result = $this->db->delete($this->_tableName)->where($condition)->execute();
if($result&&isset($where['member_id'])){
\Our\RedisHelper::delCachedFunction(\Redis\Db0\MemberMappingRedisModel::getInstance(),array(&$this, 'getList'),array(),array($where['member_id']));
}
......
......@@ -95,14 +95,20 @@ class MessageHistoryModel extends \DAO\AbstractModel {
public function convertMessage($message){
$message = unserialize($message);
$message['title'] = !empty($message['title']) ? $message['title'] : '';
$message['content'] = !empty($message['content']) ? base64_decode($message['content']) : '';
if(!empty($message['buttons'])){
$timeDiff=TIMESTAMP-$message['createTime'];
foreach($message['buttons'] as &$button){
if($button['type']==ApiConst::messageButtonTypeConfirmButton || $button['type']==ApiConst::messageButtonTypeReciverButton){
$timeDiff=TIMESTAMP-$message['createTime'];
if($button['type']==ApiConst::messageButtonTypeReciverButton){
if($timeDiff>(ApiConst::tenMinSecond-ApiConst::oneMinute)){
$button['showType']=ApiConst::messageButtonShowTypeGray;
}
}
if($button['type']==ApiConst::messageButtonTypeConfirmButton ){
if($timeDiff>(ApiConst::oneDaySecond)){
$button['showType']=ApiConst::messageButtonShowTypeGray;
}
}
}
}
return $message;
......
......@@ -111,9 +111,9 @@ class MessageOneModel extends \DAO\AbstractModel {
$where=Common::format(" (fromUserId={0} and fromType={1} and toUserId={2} and toType={3}) or (fromUserId={4} and fromType={5} and toUserId={6} and toType={7})",$data['fromUserId'],$data['fromType'],$data['toUserId'],$data['toType'],$data['toUserId'],$data['toType'],$data['fromUserId'],$data['fromType']);
$one=$this->getOneByWhereWithField($where,"*",DbNameConst::masterDBConnectName);
if(isset($one['toUserId']) && $one['toUserId']==$data['fromUserId']){
$insertSql=Common::format("insert into {0}(`fromId`,`toUserId`,`toUserName`,`toType`,`fromUserId`,`fromUserName`,`fromType`,`message`,`fromUnReadCount`,`toUnReadCount`,`gmtCreate`,`gmtUpdate`,`toId`) VALUES({1},{2},'{3}',{4},{5},'{6}',{7},'{8}',{9},{10},{11},{12},{13}) ON DUPLICATE KEY UPDATE message='{14}',fromUnReadCount=fromUnReadCount+1,gmtUpdate={15} ",$this->_tableName,$data['toId'],$data['fromUserId'],$data['fromUserName'],$data['fromType'],$data['toId'],$data['toUserName'],$data['toType'],$data['message'],ApiConst::zero,ApiConst::one,TIMESTAMP,TIMESTAMP,$data['toId'],$data['message'],TIMESTAMP);
$insertSql=Common::format("insert into {0}(`fromId`,`toUserId`,`toUserName`,`toType`,`fromUserId`,`fromUserName`,`fromType`,`message`,`fromUnReadCount`,`toUnReadCount`,`gmtCreate`,`gmtUpdate`,`toId`) VALUES({1},{2},'{3}',{4},{5},'{6}',{7},'{8}',{9},{10},{11},{12},{13}) ON DUPLICATE KEY UPDATE message='{14}',fromUnReadCount=fromUnReadCount+1,gmtUpdate={15} ",$this->_tableName,$data['toId'],$data['fromUserId'],$data['fromUserName'],$data['fromType'],$data['toId'],$data['toUserName'],$data['toType'],$data['message'],ApiConst::zero,ApiConst::one,time(),time(),$data['toId'],$data['message'],time());
}else{
$insertSql=Common::format("insert into {0}(`fromId`,`toUserId`,`toUserName`,`toType`,`fromUserId`,`fromUserName`,`fromType`,`message`,`fromUnReadCount`,`toUnReadCount`,`gmtCreate`,`gmtUpdate`,`toId`) VALUES({1},{2},'{3}',{4},{5},'{6}',{7},'{8}',{9},{10},{11},{12},{13}) ON DUPLICATE KEY UPDATE message='{14}',toUnReadCount=toUnReadCount+1,gmtUpdate={15} ",$this->_tableName,$data['fromId'],$data['toUserId'],$data['toUserName'],$data['toType'],$data['fromUserId'],$data['fromUserName'],$data['fromType'],$data['message'],ApiConst::zero,ApiConst::one,TIMESTAMP,TIMESTAMP,$data['toId'],$data['message'],TIMESTAMP);
$insertSql=Common::format("insert into {0}(`fromId`,`toUserId`,`toUserName`,`toType`,`fromUserId`,`fromUserName`,`fromType`,`message`,`fromUnReadCount`,`toUnReadCount`,`gmtCreate`,`gmtUpdate`,`toId`) VALUES({1},{2},'{3}',{4},{5},'{6}',{7},'{8}',{9},{10},{11},{12},{13}) ON DUPLICATE KEY UPDATE message='{14}',toUnReadCount=toUnReadCount+1,gmtUpdate={15} ",$this->_tableName,$data['fromId'],$data['toUserId'],$data['toUserName'],$data['toType'],$data['fromUserId'],$data['fromUserName'],$data['fromType'],$data['message'],ApiConst::zero,ApiConst::one,time(),time(),$data['toId'],$data['message'],time());
}
$res=$this->db->update($this->_tableName)->query($insertSql);
if($res){
......
......@@ -186,7 +186,7 @@ class OrderGoodsModel extends \DAO\AbstractModel {
public function getGoodsCount($orderGoods){
return count(array_sum(array_column($orderGoods, 'goodsNum')));
return array_sum(array_column($orderGoods, 'goodsNum'));
}
public function getRefundOrderGoods($orderGoods){
......
File mode changed from 100755 to 100644
......@@ -93,6 +93,8 @@ push.clientHost="wss://api.shenbd.com/wss"
push.host="127.0.0.1"
push.port="9503"
push.open=1
push.user.service.id=293
push.user.service.type=7
elastic.master.host="127.0.0.1"
elastic.master.port="9200"
......@@ -137,7 +139,8 @@ push.clientHost="wss://apiceshi.shenbd.com/wss"
push.host="127.0.0.1"
push.port="9503"
push.open=1
push.user.service.id=293
push.user.service.type=7
elastic.master.host="127.0.0.1"
elastic.master.port="9200"
elastic.master.scheme="http";
......@@ -181,6 +184,9 @@ push.host="127.0.0.1"
push.port="9503"
push.open=1
push.user.service.id=293
push.user.service.type=7
[develop : common]
; 数据库配置
resources.database.params.driver = "pdo_mysql"
......@@ -208,7 +214,8 @@ redis.database.params.port = "6379"
redis.database.params.prefix = "qm_"
out.config="/data/config"
; redis配置
push.user.service.id=293
push.user.service.type=7
;redis.database.params.password = "test"
;推送配置
push.clientHost="ws://192.168.80.18:9502"
......@@ -253,7 +260,8 @@ push.clientHost="ws://192.168.80.18:9502"
push.host="192.168.80.18"
push.port="9503"
push.open=1
push.user.service.id=293
push.user.service.type=7
elastic.master.host="192.168.1.201"
elastic.master.port="9200"
elastic.master.scheme="http";
......@@ -300,6 +308,9 @@ push.host="192.168.80.18"
push.port="9503"
push.open=1
push.user.service.id=293
push.user.service.type=7
elastic.master.host="192.168.1.201"
elastic.master.port="9200"
elastic.master.scheme="http";
File mode changed from 100755 to 100644
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>设置命中地址(</title>
<style>
</style>
</head>
<body>
<form action="/common/getSetting" method="post">
key:<input name="data[key]" value="fd4b739c4815297044191451eabf0eb5"/><br />
<input type="submit" value="提交">
</form>
</body>
</html>
\ No newline at end of file
<?php
/**
* 推送10秒推送一次
* 推送10秒推送一次
*
* @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 cliOrderClose 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 autoPushMessage(){
$conf = \Yaf\Registry::get('config')->get('redis.database.params');
$redis = new \Redis();
$redis->pconnect($conf['host'], $conf['port']);
$clientPush=\JPush\ClientPush::getInstance();
while($pushData=$redis->lPop('push_center')){
$addData = unserialize($pushData);
$addData['message'] = unserialize($addData['message']);
$clientPush->push($addData);
}
}
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('push');
if(!$this->mkdirs($lockDir)){
echo '****create dir fail ****';
exit;
}
$this->lockFileName = $lockDir .DS.'jpush.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->autoPushMessage();
echo date('Y-m-d H:i:s',TIMESTAMP).'消息推送成功'."\r\n";
}
}
$oCli = new cliOrderClose(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