Commit 8060a1f1 authored by testshenbd's avatar testshenbd

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

parents 7e976b85 534a2266
...@@ -82,7 +82,6 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -82,7 +82,6 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
if($serviceStoreIds&&$signStoreIds){ if($serviceStoreIds&&$signStoreIds){
$serviceStoreIds = array_diff($serviceStoreIds,$signStoreIds); $serviceStoreIds = array_diff($serviceStoreIds,$signStoreIds);
} }
$serviceParentClassIds = $this->getServiceStoreClasses($serviceStoreIds); $serviceParentClassIds = $this->getServiceStoreClasses($serviceStoreIds);
if($serviceParentClassIds){ if($serviceParentClassIds){
$classIds = array_merge($serviceParentClassIds,$classIds); $classIds = array_merge($serviceParentClassIds,$classIds);
...@@ -202,9 +201,9 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -202,9 +201,9 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
$newStoreIds = array(); $newStoreIds = array();
foreach($signStoreClasses as $signClass){ foreach($signStoreClasses as $signClass){
$inAreaFlag = \Our\CommonExtension::locationInArea($lat,$lng,$signClass['sign_scope']); $inAreaFlag = \Our\CommonExtension::locationInArea($lat,$lng,$signClass['sign_scope']);
//判断签约分类是否可以为当前用户提供服务,并且记录这些店铺对应的store_id
if($inAreaFlag){
$store = $storeList[$signClass['store_id']]; $store = $storeList[$signClass['store_id']];
//判断签约分类是否可以为当前用户提供服务,并且记录这些店铺对应的store_id
if($inAreaFlag&&$store){
$class_distance = \Our\CommonExtension::getDistance($lat,$lng,$store['store_latitude'],$store['store_latitude'],1); $class_distance = \Our\CommonExtension::getDistance($lat,$lng,$store['store_latitude'],$store['store_latitude'],1);
$class = $signClass; $class = $signClass;
$class['class_distance'] = $class_distance; $class['class_distance'] = $class_distance;
...@@ -215,14 +214,12 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -215,14 +214,12 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
} }
} }
foreach($returnClass as $key => $class){ foreach($returnClass as $key => $class){
$classDistance[$key] = $class['class_distance']; $classDistance[$key] = $class['class_distance'];
} }
array_multisort($classDistance, SORT_DESC, $returnClass); array_multisort($classDistance, SORT_DESC, $returnClass);
$signParentClassIds = array_unique(array_column($returnClass,'gc_parent_id')); $signParentClassIds = array_unique(array_column($returnClass,'gc_parent_id'));
//$signStoreIds = array_unique(array_column($returnClass,'store_id'));
$signStoreIds = $newStoreIds; $signStoreIds = $newStoreIds;
//将当前位置对应签约店铺存入缓存 //将当前位置对应签约店铺存入缓存
......
...@@ -851,6 +851,84 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -851,6 +851,84 @@ 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()
{
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$endTime = file_get_contents($this->baseDir . \Our\PathConst::orderCloseWaitRecieveOrder);
$endTime = $endTime ? $endTime : ApiConst::zero;
$beginTime = $endTime - ApiConst::halfDaySecond;
$storeDao=\DAO\StoreModel::getInstance();
// $beginTime=0;
$orders = $orderDao->getMustCecelRecieveOrders($beginTime, $endTime, $orderDao->getOrderDetailField());
$newOrders=array();
$orderIds=array();
if (!empty($orders)) {
foreach ($orders as $order) {
$orderDao->setDb(DbNameConst::masterDBConnectName);
$orderDao->db->doTransaction();
//更新订单信息
$updateData = array('order_state' => ApiConst::orderStateClose,'refund_amount'=>$order['orderAmount'],'gmt_update'=>TIMESTAMP,'is_effective'=>ApiConst::closeOrder);
$update = $orderDao->update(array('order_id' => $order['orderId']),$updateData);
if($update){
if ($order['paymentTime'] > ApiConst::zero && in_array($order['paymentType'], ArrayConst::orderPayTypeOnlines)) {
$isRefunMoney= $this->changeOrderStateCancelUnconditional($order);
if(!$isRefunMoney){
$orderDao->db->doRollback();
continue;
}
array_push($orderIds,$order['orderId']);
$this->updateOrderGoodsStoregeByOrderIds($orderIds);
array_push($newOrders,$order);
$orderIds=array();
$orderDao->db->doCommit();
}
$orderDao->deleteOrderCache($order['buyerId'],(string)$order['orderId'],$order['storeId'],true);
$storeDao->deleteStoreCache($order['storeId'],$order['orderId']);
$push=\Our\Push::getInstance();
$pushData=array('storeId'=>$order['storeId'],
'type'=>ApiConst::messageWaitReceive,
'waitReceiveCount'=>ApiConst::reduceOne,
'waitDeliveryCount'=>0,
'waitGetCount'=>0,
'orderCount'=>ApiConst::reduceOne,
'waitRefundProccessCount'=>ApiConst::zero,
'waitRefundReceiveCount'=>ApiConst::zero,
'refundCount'=>ApiConst::zero,
'alertCount'=>ApiConst::zero,
'params'=>array('c'=>'shopkeeper',
'm'=>'orderDetail',
'orderId'=>$order['orderId']));
$push->addOneToClient($pushData);
}
// $orderDao->deleteOrderCache($order['buyerId'],(string)$order['orderId'],$order['storeId'],true);
// $storeDao->deleteStoreCache($order['storeId'],$order['orderId']);
// $push=\Our\Push::getInstance();
// $pushData=array('storeId'=>$order['storeId'],
// 'type'=>ApiConst::messageWaitReceive,
// 'waitReceiveCount'=>ApiConst::reduceOne,
// 'waitDeliveryCount'=>0,
// 'waitGetCount'=>0,
// 'orderCount'=>ApiConst::reduceOne,
// 'waitRefundProccessCount'=>ApiConst::zero,
// 'waitRefundReceiveCount'=>ApiConst::zero,
// 'refundCount'=>ApiConst::zero,
// 'alertCount'=>ApiConst::zero,
// 'params'=>array('c'=>'shopkeeper',
// 'm'=>'orderDetail',
// 'orderId'=>$order['orderId']));
// $push->addOneToClient($pushData);
}
// $orderIds = array_column($orders, 'orderId');
// $this->updateOrderGoodsStoregeByOrderIds($orderIds);
//发送消息
$push = Push::getInstance();
$push->pushOrderCloseMessage($newOrders);
}
file_put_contents($this->baseDir . \Our\PathConst::orderCloseWaitRecieveOrder, $endTime);
}
public function changeOrderStatus() public function changeOrderStatus()
{ {
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName); $orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
......
...@@ -328,7 +328,7 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -328,7 +328,7 @@ class MemberServiceModel extends \Business\AbstractModel
return $result; return $result;
} }
private function saveWxInfoMemberInfo($where,$openid=null){ private function saveWxInfoMemberInfo($where,$openid=null, $wxappopenid=null){
$memberDao = \DAO\MemberModel::getInstance(\Our\DbNameConst::masterDBConnectName); $memberDao = \DAO\MemberModel::getInstance(\Our\DbNameConst::masterDBConnectName);
//构造需要保存的会员信息 //构造需要保存的会员信息
...@@ -336,6 +336,9 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -336,6 +336,9 @@ class MemberServiceModel extends \Business\AbstractModel
if($openid){ if($openid){
$member['member_mobile'] = $openid; $member['member_mobile'] = $openid;
} }
if($wxappopenid) {
$member['member_wxappopenid'] = $wxappopenid;
}
$result = $memberDao->addInfo($member); $result = $memberDao->addInfo($member);
return $result; return $result;
} }
...@@ -917,7 +920,8 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -917,7 +920,8 @@ class MemberServiceModel extends \Business\AbstractModel
} }
$db->doTransaction(); $db->doTransaction();
$openid = $this->getUnionId($where['encryptedData'],$where['iv'],$where['session_key']); $openid = $this->getUnionId($where['encryptedData'],$where['iv'],$where['session_key']);
$memberId = $this->saveWxInfoMemberInfo($where,$openid); $wxappOpenid = $authInfo['session_key'];
$memberId = $this->saveWxInfoMemberInfo($where, $openid, $wxappOpenid);
if(!$memberId){ if(!$memberId){
$db->doRollback(); $db->doRollback();
......
...@@ -21,7 +21,7 @@ class MemberModel extends \DAO\AbstractModel ...@@ -21,7 +21,7 @@ class MemberModel extends \DAO\AbstractModel
protected $_tableName = 'han_member'; protected $_tableName = 'han_member';
//有效用户返回数据 //有效用户返回数据
private $availMemberColumn = array('member_id', 'member_name', 'member_truename', 'member_avatar', 'member_sex', 'member_birthday', 'member_mobile', 'member_mobile_bind', 'member_qq', 'member_qqopenid', 'member_qqinfo', 'member_wxinfo', 'member_wxopenid', 'member_sinaopenid', 'member_sinainfo', 'member_points', 'member_state', 'member_quicklink', 'member_exppoints', 'store_id', 'iswx', 'agree_flag', 'seller_id', 'diliveryman_id', 'member_tag_ids', 'member_group_ids', 'is_teacher', 'member_email', 'member_email_bind','is_wxsend'); private $availMemberColumn = array('member_id', 'member_name', 'member_truename', 'member_avatar', 'member_sex', 'member_birthday', 'member_mobile', 'member_mobile_bind', 'member_qq', 'member_qqopenid', 'member_qqinfo', 'member_wxinfo', 'member_wxopenid', 'member_sinaopenid', 'member_sinainfo', 'member_points', 'member_state', 'member_quicklink', 'member_exppoints', 'store_id', 'iswx', 'agree_flag', 'seller_id', 'diliveryman_id', 'member_tag_ids', 'member_group_ids', 'is_teacher', 'member_email', 'member_email_bind', 'is_wxsend', 'member_wxappopenid');
//有效用户返回数据 //有效用户返回数据
...@@ -556,7 +556,16 @@ class MemberModel extends \DAO\AbstractModel ...@@ -556,7 +556,16 @@ class MemberModel extends \DAO\AbstractModel
return $member; return $member;
} }
public function getMemberForLogin($memberIds){ /**
* 获取登录用户
* @param $memberIds
* @param string $wxappopenid
* @return array
* User: King <358887571@qq.com>
* Date: 2018/12/29 0029
* Time: 下午 3:20
*/
public function getMemberForLogin($memberIds, $wxappopenid = ''){
$member = array(); $member = array();
$memberCon['member_id'] = array('in',$memberIds); $memberCon['member_id'] = array('in',$memberIds);
$memberCon['member_state'] = \Our\ApiConst::one; $memberCon['member_state'] = \Our\ApiConst::one;
...@@ -574,6 +583,10 @@ class MemberModel extends \DAO\AbstractModel ...@@ -574,6 +583,10 @@ class MemberModel extends \DAO\AbstractModel
if(empty($member)){ if(empty($member)){
$member = $memberList[0]; $member = $memberList[0];
} }
if($wxappopenid && $member['member_wxappopenid']=='') {
$this->updateInfo(array('member_wxappopenid'=>$wxappopenid), array('member_id'=>$member['member_id']));
}
$member['member_wxappopenid'] = $wxappopenid;
$memberAvatarUrl = $this->getMemberAvatarUrl($member['member_id'], $member['member_avatar']); $memberAvatarUrl = $this->getMemberAvatarUrl($member['member_id'], $member['member_avatar']);
$member['memberAvatarUrl'] = $memberAvatarUrl; $member['memberAvatarUrl'] = $memberAvatarUrl;
} }
......
<?php
/**
* 关闭订单
* 执行时间:每分钟执行一次
*
* @author chenjiebin <sjlinyu@qq.com>
*/
define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../../../')); //指向public的上一级
require APPLICATION_PATH . '/scripts/crontab/baseCli.php';
require APPLICATION_PATH . '/scripts/crontab/common.php';
error_reporting(E_ALL ^ E_NOTICE);
class 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 autoCloseOrder(){
$orderService=\Business\Order\OrderServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$orderService->baseDir= \Our\Common::getConfig('out.config');
$orderService->changeOrderStatusSecond();
$messageService=\Business\Message\MessageServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$messageService->addMessageCenterToDb();
}
protected function _runCli()
{
$this->_debug = isset($this->aArgv[1]) ? intval($this->aArgv[1]) : 0;
if ($this->_debug)
{
echo "*** Debug mode ***\n";
}
// Step: 02 检查是否已有相同CLI在运行中
$lockDir=$this->_getBaseFileName('order');
if(!$this->mkdirs($lockDir)){
echo '****create dir fail ****';
exit;
}
$this->lockFileName = $lockDir .DS.'close.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->autoCloseOrder();
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