Commit c70323d6 authored by zhz's avatar zhz

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

parents 15ecb33e 66aeb4bf
......@@ -83,7 +83,8 @@ class MemberController extends \Our\Controller_AbstractApi {
* @throws Exception
*/
public function logOutAction(){
$result = $this->memberService->logOut($this->key);
$key = $this->req[\Our\NameConst::data]['key'];
$result = $this->memberService->logOut($key);
if($result){
$this->success(new stdClass());
}
......
......@@ -1020,6 +1020,45 @@ class GoodsCommonServiceModel extends \Business\AbstractModel
}
/**
* 店铺在售商品分类定时器
*/
public function storeOnlineGoodsClass(){
$storeOnlineGoodsClassDao = \DAO\GoodsClass\StoreOnlineGoodsClassModel::getInstance();
$addGoodsClassList = $storeOnlineGoodsClassDao->getChangedGoodsClass(0,2000,\Our\ApiConst::plus);
if($addGoodsClassList){
foreach($addGoodsClassList as $goodsClassStr){
$goodsClass = unserialize($goodsClassStr);
$this->checkExistOnlineGoodsClass($goodsClass);
}
}
$minusGoodsClassList = $storeOnlineGoodsClassDao->getChangedGoodsClass(0,2000,\Our\ApiConst::minus);
if($minusGoodsClassList){
foreach($minusGoodsClassList as $goodsClassStr){
$goodsClass = unserialize($goodsClassStr);
$this->checkRemoveOnlineGoodsClass($goodsClass);
}
}
}
/**
* 获取新增商品对应的商品分类是否在店铺在售商品分类表,如果在则忽略,不在将分类增加到在售商品分类表
* @param $goodsClass
* @return bool
*/
public function checkExistOnlineGoodsClass($goodsClass){
$storeOnlineGoodsClassDao = \DAO\GoodsClass\StoreOnlineGoodsClassModel::getInstance();
$oldTemp = $storeOnlineGoodsClassDao->find($goodsClass);
if(!$oldTemp){
$storeOnlineGoodsClassDao->insert($goodsClass);
}
return true;
}
public function checkRemoveOnlineGoodsClass($goodsClass){
}
private static $_instance = null;
......
......@@ -485,28 +485,6 @@ class OrderServiceModel extends \Business\AbstractModel
$orders = $orderDao->getMustCecelRecieveOrders($beginTime, $endTime, $orderDao->getOrderDetailField());
if (!empty($orders)) {
// $orderIds = array_column($orders, 'orderId');
// $orderGoods = $orderGoodsDao->getOrderGoodsByOrderIds($orderIds, $this->getGoodsDetailField());
// $storeCartsList=array();
// $storeCarts=array();
// $storeCarts['storeCarts']=array();
// foreach($orderGoods as $orderGood){
// $orderGood['type']=!empty($orderGood['goodsGroup'])? \Our\ApiConst::addBundingToCart:\Our\ApiConst::addGoodsToCart;
// $orderGood['goodsNum']=-$orderGood['goodsNum'];
// $orderGood['goodsList']=\Our\Common::isSerialized($orderGood['goodsGroup'])?unserialize($orderGood['goodsGroup']):array();
// array_push($storeCarts['storeCarts'],$orderGood);
// }
// if(!empty($storeCarts['storeCarts'])){
// array_push($storeCartsList,$storeCarts);
// }
// // $orderDao->updateNotRecieveOrders(ApiConst::orderStateWaitConfirm, ApiConst::orderStateClose, 'add_time', ApiConst::orderStateWaitConfirmBeyond, $this->orderMessageField);
// try{
// $orderConfirmUtilDao->updateGoodsStorage($storeCartsList);
// }catch(\Exception $ex){
// throw new \Exception('商品库存更新失败:'.$ex->getMessage(),$ex->getCode());
// }
// exit;
foreach ($orders as $order) {
//更新订单信息
$updateData = array('order_state' => ApiConst::orderStateClose,'refund_amount'=>$order['orderAmount']);
......@@ -518,6 +496,30 @@ class OrderServiceModel extends \Business\AbstractModel
}
$orderDao->deleteOrderCache($order['buyerId'],(string)$order['orderId'],$order['storeId']);
}
$orderIds = array_column($orders, 'orderId');
//更新商品库存
$orderGoods = $orderGoodsDao->getOrderGoodsByOrderIds($orderIds, $this->getGoodsDetailField());
$storeCartsList=array();
$storeCarts=array();
$storeCarts['storeCarts']=array();
foreach($orderGoods as $orderGood){
$orderGood['type']=!empty($orderGood['goodsGroup'])? \Our\ApiConst::addBundingToCart:\Our\ApiConst::addGoodsToCart;
$orderGood['goodsNum']=$orderGood['goodsNum'];
$orderGood['goodsList']=\Our\Common::isSerialized($orderGood['goodsGroup'])?unserialize($orderGood['goodsGroup']):array();
array_push($storeCarts['storeCarts'],$orderGood);
}
if(!empty($storeCarts['storeCarts'])){
array_push($storeCartsList,$storeCarts);
}
// $orderDao->updateNotRecieveOrders(ApiConst::orderStateWaitConfirm, ApiConst::orderStateClose, 'add_time', ApiConst::orderStateWaitConfirmBeyond, $this->orderMessageField);
try{
$orderConfirmUtilDao->updateGoodsStorage($storeCartsList,\Our\ApiConst::plus);
}catch(\Exception $ex){
$orderidsStr=implode(',',array_column($orders,'orderId'));
echo '商品库存更新失败:'.$ex->getMessage().$ex->getCode().":".$orderidsStr;
}
//发送消息
$push = Push::getInstance();
$push->pushOrderCloseMessage($orders);
......
......@@ -209,10 +209,8 @@ class MemberServiceModel extends \Business\AbstractModel
* 退出登录
*/
public function logOut($key){
$this->memberDb0Redis->tableDel($key);
$sess=\Yaf\Session::getInstance();
$sess->del('member_id');
return true;
$result = \Redis\Db0\SessionRedisModel::getInstance()->delSessionKey($key);
return $result;
}
/**
......
......@@ -313,11 +313,12 @@ class GoodsModel extends \DAO\AbstractModel {
$updateAllSql = $baseSql;
$dataIds = array();
for ($i = 0; $i < count($datas); $i++) {
$updateSql = \Our\Common::format(" WHEN {0} THEN goods_storage{2}{1} ", $datas[$i]['goodsId'], $datas[$i]['goodsNum'],\Our\ArrayConst::ops[$op]);
$updateSql = \Our\Common::format(" WHEN {0} THEN goods_storage{2}{1},", $datas[$i]['goodsId'], $datas[$i]['goodsNum'],\Our\ArrayConst::ops[$op]);
$dataIds[] = $datas[$i]['goodsId'];
$updateAllSql .= $updateSql;
if ($i % 1000 == 0 && $i != 0) {
$updateAllSql .= \Our\Common::format('END where goods_id in ({0})',implode(',',$dataIds));
$updateAllSql = trim($updateAllSql,',');
$updateAllSql .= \Our\Common::format(' END where goods_id in ({0})',implode(',',$dataIds));
$one = $this->db->update($this->_tableName)->query($updateAllSql);
if (!$one) {
$error++;
......@@ -327,7 +328,8 @@ class GoodsModel extends \DAO\AbstractModel {
}
}
if ($updateAllSql != $baseSql) {
$updateAllSql .= \Our\Common::format('END where goods_id in ({0})',implode(',',$dataIds));
$updateAllSql = trim($updateAllSql,',');
$updateAllSql .= \Our\Common::format(' END where goods_id in ({0})',implode(',',$dataIds));
$one = $this->db->update($this->_tableName)->query($updateAllSql);
if (!$one) {
$error++;
......
......@@ -25,6 +25,25 @@ class StoreOnlineGoodsClassModel extends \DAO\AbstractModel{
}
public function findByWhere($where){
$this->setDb(\Our\DbNameConst::salveDBConnectName);
$address = $this->db->from($this->_tableName)->where($where)->fetchOne();
return $address;
}
public function insert($data){
$this->setDb(\Our\DbNameConst::masterDBConnectName);
$data['gmt_create'] = TIMESTAMP;
$result = $this->db->insert($this->_tableName)->rows($data)->execute();
if($result){
$storeId = $data['store_id'];
\Our\RedisHelper::delCachedFunction(\Redis\Db6\StoreOnlineGoodsClassRedisModel::getInstance(),array(&$this, 'getList'),array(),array($storeId));
}
return $result ;
}
public function getList($where,$field = \Our\NameConst::allField){
$this->setDb($this->dbName);
$result = $this->db->select($field)->from($this->_tableName)->where($where)->fetchAll();
......@@ -82,6 +101,41 @@ class StoreOnlineGoodsClassModel extends \DAO\AbstractModel{
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emtpyGcIdForOnlineChildrenClass);
}
}
public function addChangedGoodsClass($goodsClass,$type = \Our\ApiConst::plus){
$key='changedAddGoodsClass';
if($type==\Our\ApiConst::minus){
$key = 'changedMinusGoodsClass';
}
$storeOnlineClassRedisModel = \Redis\Db6\StoreOnlineGoodsClassRedisModel::getInstance();
$storeOnlineClassRedisModel->tableLPush($key,$goodsClass);
}
public function getChangedGoodsClass($type = \Our\ApiConst::plus){
$key='changedAddGoodsClass';
if($type==\Our\ApiConst::minus){
$key = 'changedMinusGoodsClass';
}
$storeOnlineClassRedisModel = \Redis\Db6\StoreOnlineGoodsClassRedisModel::getInstance();
return $storeOnlineClassRedisModel->tableLPop($key);
}
/**
* 获取更改商品
* @param $start 记录开始条数
* @param $end 记录结束条数
* @return \Redis\mix
*/
public function getChangedGoodsClasses($start,$end,$type = \Our\ApiConst::plus){
$key='changedAddGoodsClass';
if($type==\Our\ApiConst::minus){
$key = 'changedMinusGoodsClass';
}
$storeOnlineClassRedisModel = \Redis\Db6\StoreOnlineGoodsClassRedisModel::getInstance();
return $storeOnlineClassRedisModel->tableLRange($key,$start,$end);
}
/**
* 类实例
*/
......
......@@ -208,30 +208,49 @@ class GoodsCommonModel extends \DAO\AbstractModel {
$datas = array_values($dataList);
$this->setDb(\Our\DbNameConst::masterDBConnectName);
$error = 0;
$baseSql = "UPDATE {$this->_tableName} set goods_storage = case goods_commonid ";
$baseSql = "UPDATE {$this->_tableName} set ";
$updateAllSql = $baseSql;
$dataIds = array();
if($updateSaleNumFlag&&$op!=\Our\ApiConst::set){
$updateSaleNumOp = $op==\Our\ApiConst::minus?'+':'-';
}
$goodsCommonSql = 'goods_storage = case goods_commonid ';
if($updateSaleNumFlag){
$saleNumSql = 'sale_num = case goods_commonid ';
}
for ($i = 0; $i < count($datas); $i++) {
$updateSql = \Our\Common::format(" WHEN {0} THEN goods_storage{1}{2} ", $datas[$i]['goodsCommonId'],\Our\ArrayConst::ops[$op], $datas[$i]['goodsNum']);
$goodsCommonSql .= \Our\Common::format(" WHEN {0} THEN goods_storage{1}{2}, ", $datas[$i]['goodsCommonId'],\Our\ArrayConst::ops[$op], $datas[$i]['goodsNum']);
if($updateSaleNumFlag){
$updateSql = \Our\Common::format(" WHEN {0} THEN goods_storage{1}{2} END,sale_num = case goods_commonid when {0} THEN sale_num {3}{2} END", $datas[$i]['goodsCommonId'],\Our\ArrayConst::ops[$op], $datas[$i]['goodsNum'],$updateSaleNumOp);
$saleNumSql .= \Our\Common::format(" when {0} THEN sale_num {1}{2},", $datas[$i]['goodsCommonId'],$updateSaleNumOp, $datas[$i]['goodsNum']);
}
$dataIds[] = $datas[$i]['goodsCommonId'];
$updateAllSql .= $updateSql;;
if ($i % 1000 == 0 && $i != 0) {
$goodsCommonSql = trim($goodsCommonSql,',').' END';
$updateAllSql .= $goodsCommonSql;
if($updateSaleNumFlag){
$saleNumSql = ','.trim($saleNumSql,',').' END ';
$updateAllSql .= $saleNumSql;
}
$updateAllSql .= \Our\Common::format(' where goods_commonid in ({0})',implode(',',$dataIds));
$one = $this->db->update($this->_tableName)->query($updateAllSql);
if (!$one) {
$error++;
}
$updateAllSql = $baseSql;
$goodsCommonSql = 'goods_storage = case goods_commonid ';
if($updateSaleNumFlag){
$saleNumSql = 'sale_num = case goods_commonid ';
}
$dataIds = array();
}
}
if ($updateAllSql != $baseSql) {
$goodsCommonSql = trim($goodsCommonSql,',').' END ';
$updateAllSql .= $goodsCommonSql;
if($updateSaleNumFlag){
$saleNumSql = ','.trim($saleNumSql,',').' END ';
$updateAllSql .= $saleNumSql;
}
$updateAllSql .= \Our\Common::format(' where goods_commonid in ({0})',implode(',',$dataIds));
$one = $this->db->update($this->_tableName)->query($updateAllSql);
......
......@@ -821,7 +821,7 @@ class OrderModel extends \DAO\AbstractModel
public function getMustCecelRecieveOrders($beginTime=ApiConst::zero, $endTime, $field = '*')
{
$this->setDb($this->dbName);
$where=Common::format(" payment_time between {0} and {1} and order_state={2}",$beginTime,$endTime,ApiConst::orderStateWaitConfirm);
$where=Common::format(" add_time between {0} and {1} and order_state={2}",$beginTime,$endTime,ApiConst::orderStateWaitConfirm);
$list = $this->db->select($field)->from($this->_tableName)->where($where)->order('payment_time','desc')->fetchAll();
return $list;
}
......
......@@ -70,4 +70,20 @@ class AbstractModel extends \Redis\AbstractModel {
public function tableDecr($h) {
return $this->decr($this->calcKey($h));
}
public function tableLPush($id,$data){
$res=$this->lpush($this->calcKey($id), $data);
return $res;
}
public function tableLPop($id){
$res=$this->lpop($this->calcKey($id));
return $res;
}
public function tableLRange($key,$start,$end){
$res = $this->lrange($this->calcKey($key),$start,$end);
return $res;
}
}
......@@ -25,7 +25,6 @@ class StoreOnlineGoodsClassRedisModel extends \Redis\Db6\AbstractModel {
return $res;
}
/**
* 类实例
*
......
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