Commit 4f8ce777 authored by zhz's avatar zhz

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

parents 0ccb8b51 d02fddf0
......@@ -2,7 +2,9 @@
namespace Alipay\aop;
require_once 'AopEncrypt.php';
require_once 'SignData.php';
$libaryUrl=\Bootstrap::getUrlIniConfig('libary');
require_once ($libaryUrl.'/Alipay/lotusphp_runtime/Logger/LtLogger.php');
class AopClient {
//应用ID
public $appId;
......@@ -230,14 +232,12 @@ class AopClient {
$reponse = curl_exec($ch);
if (curl_errno($ch)) {
throw new Exception(curl_error($ch), 0);
throw new \Exception(curl_error($ch), 0);
} else {
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (200 !== $httpStatusCode) {
throw new Exception($reponse, $httpStatusCode);
throw new \Exception($reponse, $httpStatusCode);
}
}
......@@ -253,7 +253,7 @@ class AopClient {
protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt) {
$localIp = isset ($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
$logger = new LtLogger;
$logger = new \LtLogger();
$logger->conf["log_file"] = rtrim(AOP_SDK_WORK_DIR, '\\/') . '/' . "logs/aop_comm_err_" . $this->appId . "_" . date("Y-m-d") . ".log";
$logger->conf["separator"] = "^_^";
$logData = array(
......@@ -475,17 +475,17 @@ class AopClient {
if ($this->checkEmpty($apiParams['biz_content'])) {
throw new Exception(" api request Fail! The reason : encrypt request is not supperted!");
throw new \Exception(" api request Fail! The reason : encrypt request is not supperted!");
}
if ($this->checkEmpty($this->encryptKey) || $this->checkEmpty($this->encryptType)) {
throw new Exception(" encryptType and encryptKey must not null! ");
throw new \Exception(" encryptType and encryptKey must not null! ");
}
if ("AES" != $this->encryptType) {
throw new Exception("加密类型只支持AES");
throw new \Exception("加密类型只支持AES");
}
// 执行加密
......@@ -510,7 +510,7 @@ class AopClient {
//发起HTTP请求
try {
$resp = $this->curl($requestUrl, $apiParams);
} catch (Exception $e) {
} catch (\Exception $e) {
$this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_ERROR_" . $e->getCode(), $e->getMessage());
return false;
......@@ -1014,7 +1014,7 @@ class AopClient {
* @param $signData
* @param $resp
* @param $respObject
* @throws Exception
* @throws \Exception
*/
public function checkResponseSign($request, $signData, $resp, $respObject) {
......@@ -1023,7 +1023,7 @@ class AopClient {
if ($signData == null || $this->checkEmpty($signData->sign) || $this->checkEmpty($signData->signSourceData)) {
throw new Exception(" check sign Fail! The reason : signData is Empty");
throw new \Exception(" check sign Fail! The reason : signData is Empty");
}
......@@ -1045,12 +1045,12 @@ class AopClient {
$checkResult = $this->verify($signData->signSourceData, $signData->sign, $this->alipayPublicKey, $this->signType);
if (!$checkResult) {
throw new Exception("check sign Fail! [sign=" . $signData->sign . ", signSourceData=" . $signData->signSourceData . "]");
throw new \Exception("check sign Fail! [sign=" . $signData->sign . ", signSourceData=" . $signData->signSourceData . "]");
}
} else {
throw new Exception("check sign Fail! [sign=" . $signData->sign . ", signSourceData=" . $signData->signSourceData . "]");
throw new \Exception("check sign Fail! [sign=" . $signData->sign . ", signSourceData=" . $signData->signSourceData . "]");
}
}
......
<?php
namespace Alipay\aop;
/**
* Created by PhpStorm.
* User: jiehua
......
......@@ -580,7 +580,7 @@ class OrderConfirmUtil {
*
* @param $storeCarts
*/
public function updateGoodsStorage($storeCartsList){
public function updateGoodsStorage($storeCartsList,$op = \Our\ApiConst::minus,$updateSaleNumFlag= true ){
$goodsCommonIds = array();
$goodsIds = array();
$blIds = array();
......@@ -626,12 +626,23 @@ class OrderConfirmUtil {
}
}
}
$this->updateGoodsStorageToDBAndCache($goodsCommonIds,$goodsIds,$blIds,$goodsNewList);
$this->updateGoodsStorageToDBAndCache($goodsCommonIds,$goodsIds,$blIds,$goodsNewList,$op,$updateSaleNumFlag);
//$goodsStorages = $goodsDao->getOnlineStorageGoodsByGoodsCommonIds(array_keys($goodsCommonIds));
return true;
}
public function updateGoodsStorageToDBAndCache($goodsCommons,$goodsList,$blGoodsList,$goodsNewList){
/**
* @param $goodsCommons
* @param $goodsList
* @param $blGoodsList
* @param $goodsNewList
* @param int $op
* @param bool $updateSaleNumFlag
* @return bool
* @throws \Error\OurExceptionModel
* @throws \Exception
*/
public function updateGoodsStorageToDBAndCache($goodsCommons,$goodsList,$blGoodsList,$goodsNewList,$op=\Our\ApiConst::minus,$updateSaleNumFlag=true){
if($blGoodsList){
$dbName = \Our\DbNameConst::masterDBConnectName;
$pBundlingDao = \DAO\PBundlingModel::getInstance($dbName);
......@@ -644,8 +655,8 @@ class OrderConfirmUtil {
$dbName = \Our\DbNameConst::masterDBConnectName;
$goodsDao = \DAO\GoodsModel::getInstance($dbName);
$goodsCommonDao = \DAO\GoodsCommonModel::getInstance($dbName);
$resultGoodsCommon = $goodsCommonDao->updateGoodsStorage($goodsCommons);
$resultGoods = $goodsDao->updateGoodsStorage($goodsNewList);
$resultGoodsCommon = $goodsCommonDao->updateGoodsStorage($goodsCommons,$op,$updateSaleNumFlag);
$resultGoods = $goodsDao->updateGoodsStorage($goodsNewList,$op);
if(!($resultGoodsCommon&&$resultGoods)){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::goodsStorageToDBFailedForOrder);
}
......@@ -659,7 +670,7 @@ class OrderConfirmUtil {
}
}
if($goodsCommons&&$goodsList){
$resultGoodsCache = $goodsDao->opOnlineStorageGoodsByGoodsCommonIds($goodsList);
$resultGoodsCache = $goodsDao->opOnlineStorageGoodsByGoodsCommonIds($goodsList,$op,$updateSaleNumFlag);
if(!$resultGoodsCache){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::goodsStorageToCacheFailedForOrder);
}
......
......@@ -145,4 +145,10 @@ class ArrayConst
const messageOrderButtonsType=array(
0,1,2
);
const ops = array(
\Our\ApiConst::minus => '-',
\Our\ApiConst::plus => '+',
\Our\ApiConst::set => '='
);
}
\ No newline at end of file
......@@ -125,6 +125,8 @@ class NameConst {
const onlineStorageGoodsPrefix = 'onlineStorageGoods_';
const onlineGoodsCommonSaleNumPrefix = 'onlineGoodsCommonSaleNum';
const onlineStorageBlGoodsPrefix = 'onlineStorageBlGoods';//组合销售库存前缀
const storeCoverPrefix = 'storeCover_';
......
......@@ -207,12 +207,21 @@ class Push
public function sendTcpMessage()
{
$push = \Yaf\Registry::get('config')->get('push');
$conf = \Yaf\Registry::get('config')->get('redis.database.params');
if ($push['open']) {
if(!empty($this->data)){
$redis=new \Redis();
$redis->connect($conf['host'], $conf['port']);
if(!empty($conf['password'])){
$redis->auth($conf['password']);
}
$message['data'] = $this->data;
$message['uid'] = !empty($this->uid)?$this->uid:ApiConst::zero;
// $message['data']=array_slice($message['data'],2,14);
$message = json_encode($message);
$key=md5($message);
$redis->set($key,$message);
$message=$key;
$message = $message . "\r\n";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!@socket_connect($socket, $push['host'], $push['port'])) {
......@@ -239,6 +248,7 @@ class Push
return true;
}
unset($this->data);
unset($redis);
}
} else {
$this->errorCode = CodeConfigModel::pushIsNotOpen;
......
......@@ -62,7 +62,7 @@ class Alipay {
}
public function refund($order){
$refundAmount = round($order['refundAmount']/\Our\ApiConst::hundred,\Our\ApiConst::two);
if(APP_ENV == 'develop'||APP_ENV == 'test'||APP_ENV == 'pre'){
if(APP_ENV == 'develop'||APP_ENV == 'test'||APP_ENV == 'pre' || APP_ENV=='ccwdevelop'){
$refundAmount = 0.01;
}
$aop = new \Alipay\aop\AopClient();
......@@ -77,7 +77,7 @@ class Alipay {
$outRequestNo=$this->getRandomString(ApiConst::nine);
// require_once BASE_ROOT_PATH.'/core/payment/alipay/aop/request/AlipayTradeRefundRequest.php';
// //require_once 'aop/request/AlipayTradeRefundRequest.php';
$request = new \Alipay\aop\request\AlipayTradeAppPayRequest();
$request = new \Alipay\aop\request\AlipayTradeRefundRequest();
$request->setBizContent("{" .
"\"out_trade_no\":\"{$order['outTradeNo']}\"," .
"\"refund_amount\":{$refundAmount}," .
......
......@@ -68,15 +68,15 @@ class WxPay extends \Payment\TencentPay
{
$total_fee = intval($param['totalFee']);
$refund_fee = intval($param['refundFee']);
if (APP_ENV == 'develop' || APP_ENV == 'test' || APP_ENV == 'pre') {
if(APP_ENV == 'develop'||APP_ENV == 'test'||APP_ENV == 'pre' || APP_ENV=='ccwdevelop'){
$this->parameters['total_fee'] = 1;
$this->parameters['refund_fee'] = 1;
} else {
$this->parameters['total_fee'] = $total_fee;
$this->parameters['refund_fee'] = $refund_fee;
}
$this->parameters['out_refund_no'] = $param['refund_order_no'];
$this->parameters['out_trade_no'] = $param['out_trade_no'];
$this->parameters['out_refund_no'] = $param['refundOrderNo'];
$this->parameters['out_trade_no'] = $param['outTradeNo'];
$this->parameters['op_user_id'] = $this->mch_id;
$this->parameters['nonce_str'] = $this->createNoncestr(32);
$this->parameters['appid'] = \Our\PayConst::wxPayAppId;
......
......@@ -25,6 +25,8 @@ class GoodsCommonServiceModel extends \Business\AbstractModel
}
$commonGoodsInstance = \DAO\GoodsCommonModel::getInstance();
$commonInfo = \Our\RedisHelper::cachedFunction(\Redis\Db4\GoodsCommonRedisModel::getInstance(),array(&$commonGoodsInstance, 'getOneById'),array($goodsCommonId),0,array($goodsCommonId));
$saleNum = $commonGoodsInstance->getGoodsSaleNumFromCache($goodsCommonId);
$commonInfo['sale_num'] = $saleNum;
if(!$commonInfo){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::goodsNotExist);
}
......
......@@ -397,22 +397,13 @@ class OrderServiceModel extends \Business\AbstractModel
public function changeOrderStateCancelUnconditional($orderInfo)
{
echo 234234;exit;
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::masterDBConnectName);
//$orderGoodsDao=\DAO\Order\OrderGoodsModel::getInstance();
$orderGoodsDao=\DAO\Order\OrderGoodsModel::getInstance(DbNameConst::masterDBConnectName);
// $orderGoods=$orderGoodsDao->getOrderGoodsByOrderIds($orderInfo['orderId']);
try {
$orderId = $orderInfo['orderId'];
//更新订单信息
// $updateData = array('order_state' => ORDER_STATE_CANCEL,'refund_amount'=>$orderInfo['orderAmount']);
// $update = $orderDao->update($updateData, array('order_id' => $orderId));
$update=true;
if (!$update) {
echo '订单:' . json_encode($orderInfo) . '关闭失败!!' . "\r\n";
}else{
echo 2134234;exit;
$update=array();
$refundSn = $refundReturnDao->getRefundsn($orderInfo['storeId']);
//生成退款记录
$update['order_id'] = $orderInfo['orderId'];
......@@ -433,43 +424,42 @@ class OrderServiceModel extends \Business\AbstractModel
$update['reason_info'] = '用户付款' . $waitDiff . '分钟内,店铺未接单,自动取消订单';
$update['buyer_message'] = '用户付款' . $waitDiff. '分钟内,店铺未接单,自动取消订单';
$update['is_suc_refund'] = 1;
echo json_encode($update);exit;
$res = $refundReturnDao->add($update);
$res = $refundReturnDao->addRefundReturn($update);
if (!$res) {
echo '退款记录:' . json_encode($orderInfo) . '写入失败!!' . "\r\n";
}else{
$param['refundOrderNo'] = $refundSn;
//这个有可能多次退款的时候要变
$param['outTradeNo'] = $orderInfo['paySn'];
$param['totalFee'] = $orderInfo['orderAmount'];
$param['refundFee'] = $orderInfo['orderAmount'];//全额退款
$param['storeId']=$orderInfo['storeId'];
$param['buyerId']=$orderInfo['buyerId'];
if (intval($orderInfo['paymentType']) == ApiConst::wxAppPayType) {
$wxpay = \Payment\WxPay::getInstance();
$refund_return = $wxpay->refund($param);
echo json_encode($refund_return);
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
throw new Exception('微信退款操作执行失败!');
echo '微信退款操作执行失败!'.$orderInfo['orderId']."\r\n";
return false;
}
} else if (intval($orderInfo['paymentType']) == ApiConst::aliPayType) {
} else if (intval($orderInfo['paymentType']) == ApiConst::alipay) {
$aliPay=\Payment\Alipay::getInstance();
$return = $aliPay->refund($param);
echo json_encode($return);
$resultCode = $return->code;
if(!empty($resultCode)&&$resultCode == 10000){
return true;
} else {
echo '支付宝退款操作执行失败:'.$orderInfo['orderId']."\r\n";
return false;
}
if (!($resultCode && $resultCode == 10000)) {
throw new Exception('支付宝退款操作执行失败!');
}
}
$orderDao->deleteOrderCache($orderInfo['buyerId']);
echo $orderId." 退款操作操作成功";
}
$where['order_id']=$orderInfo['orderId'];
$orderGoodsUpdateData['refund_state_name']='退款成功';
$orderGoodsUpdateData['refund_id']=1;
$orderGoodsDao->update($where,$orderGoodsUpdateData);
echo " 退款操作操作成功:".$orderId;
return true;
}
......@@ -490,37 +480,46 @@ class OrderServiceModel extends \Business\AbstractModel
$beginTime = $beginTime ? $beginTime : ApiConst::zero;
$endTime = TIMESTAMP - ApiConst::orderStateWaitConfirmBeyond;
$orders = $orderDao->getMustCecelRecieveOrders($beginTime, $endTime, $orderDao->getOrderDetailField());
if (!empty($orders)) {
$orderIds = array_column($orders, 'orderId');
$orderGoods = $orderGoodsDao->getOrderGoodsByOrderIds($orderIds, $this->getGoodsDetailField());
// $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) {
$orderDao->deleteOrderCache($order['buyerId'], $order['orderId'], $order['storeId']);
if ($order['paymentTime'] > ApiConst::zero && in_array($orders['paymentType'], ArrayConst::orderPayTypeOnlines)) {
//更新订单信息
$updateData = array('order_state' => ApiConst::orderStateClose,'refund_amount'=>$order['orderAmount']);
$update = $orderDao->update(array('order_id' => $order['orderId']),$updateData);
if($update){
if ($order['paymentTime'] > ApiConst::zero && in_array($order['paymentType'], ArrayConst::orderPayTypeOnlines)) {
$this->changeOrderStateCancelUnconditional($order);
}
}
$orderDao->deleteOrderCache($order['buyerId'],$order['orderId'],$order['storeId']);
}
$push = Push::getInstance();
$push->pushOrderCloseMessage($orders);
$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());
}
}
file_put_contents($this->baseDir . \Our\PathConst::orderCloseWaitRecieveOrder, $endTime);
}
//订单任务脚本自动确认收货
......
......@@ -140,16 +140,21 @@ class GoodsModel extends \DAO\AbstractModel {
}
/**
* 更新商品缓存
* 更新商品库存缓存以及更新销量
* @param $goodsList 商品列表
* @param int $op 删减标识符(1:增加,0:减少,2:直接设置)
* @return bool
*/
public function opOnlineStorageGoodsByGoodsCommonIds($goodsList,$op = \Our\ApiConst::minus){
public function opOnlineStorageGoodsByGoodsCommonIds($goodsList,$op = \Our\ApiConst::minus,$updateSaleNumFalg = true){
$goodsRedis = \Redis\Db4\GoodsRedisModel::getInstance();
if($updateSaleNumFalg){
$goodsCommonRedis = \Redis\Db4\GoodsCommonRedisModel::getInstance();
$onlineGoodsCommonSaleNumKey = \Our\NameConst::onlineGoodsCommonSaleNumPrefix;
}
$goodsCommonList = $this->getOnlineStorageGoodsByGoodsCommonIds(array_keys($goodsList));
foreach($goodsCommonList as $goodsCommonId=>$goodsCommonsTemp){
$newGoodsList = array();
$totalGoodsNum = \Our\ApiConst::zero;
foreach($goodsCommonsTemp as $goodsId=>$temp){
if($goodsList[$goodsCommonId][$goodsId]&&$goodsList[$goodsCommonId][$goodsId]['goodsNum']>\Our\ApiConst::zero){
if($op == \Our\ApiConst::minus&&$temp['goodsStorage']>=$goodsList[$goodsCommonId][$goodsId]['goodsNum']){
......@@ -161,6 +166,7 @@ class GoodsModel extends \DAO\AbstractModel {
}else{
return false;
}
$totalGoodsNum += $goodsList[$goodsCommonId][$goodsId]['goodsNum'];
}
$newGoodsList[$goodsId]= serialize($temp);
}
......@@ -170,6 +176,19 @@ class GoodsModel extends \DAO\AbstractModel {
if(!$result){
return false;
}
}
/**
* 需要更新销量时 ,如果已经存在销量对应缓存,对销量对应缓存进行加减操作
*/
if($updateSaleNumFalg&&$op!=\Our\ApiConst::set&&$totalGoodsNum>\Our\ApiConst::zero){
$updateGoodsNum = $totalGoodsNum;
if($op==\Our\ApiConst::plus){
$updateGoodsNum = -$updateGoodsNum;
}
if($goodsCommonRedis->tableHExists($onlineGoodsCommonSaleNumKey,$goodsCommonId)){
$goodsCommonRedis->tableHIncrBy($onlineGoodsCommonSaleNumKey,$goodsCommonId,$updateGoodsNum);
}
}
}
return true;
......@@ -286,7 +305,7 @@ class GoodsModel extends \DAO\AbstractModel {
}
public function updateGoodsStorage($dataList){
public function updateGoodsStorage($dataList,$op=\Our\ApiConst::zero){
$datas = array_values($dataList);
$this->setDb(\Our\DbNameConst::masterDBConnectName);
$error = 0;
......@@ -294,7 +313,7 @@ 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-{1} ", $datas[$i]['goodsId'], $datas[$i]['goodsNum']);
$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) {
......
......@@ -25,9 +25,32 @@ class GoodsCommonModel extends \DAO\AbstractModel {
public function init(){
}
public function getOneById($goodsCommonId){
$this->setDb();
return $this->db->select('*')->from($this->_tableName)->where(array('goods_commonid'=>$goodsCommonId))->fetchOne();
public function getOneById($goodsCommonId,$field = \Our\NameConst::allField){
$this->setDb($this->dbName);
return $this->db->select($field)->from($this->_tableName)->where(array('goods_commonid'=>$goodsCommonId))->fetchOne();
}
public function getGoodsSaleNumFromCache($goodsCommonId){
$goodsCommonRedis = \Redis\Db4\GoodsCommonRedisModel::getInstance();
$onlineGoodsCommonSaleNumKey = \Our\NameConst::onlineGoodsCommonSaleNumPrefix;
if($goodsCommonRedis->tableHExists($onlineGoodsCommonSaleNumKey,$goodsCommonId)){
$saleNum = $goodsCommonRedis->tableHGet($onlineGoodsCommonSaleNumKey,$goodsCommonId);
}else{
$goodsCommon = $this->getOneById($goodsCommonId,'sale_num');
$saleNum = $goodsCommon['sale_num'];
$goodsCommonRedis->tableHIncrBy($onlineGoodsCommonSaleNumKey,$goodsCommonId,$saleNum);
}
return $saleNum;
}
/**
* 删除销量缓存
* @param $goodsCommonId
*/
public function deleteGoodsSaleNumFromCache($goodsCommonId){
$goodsCommonRedis = \Redis\Db4\GoodsCommonRedisModel::getInstance();
$onlineGoodsCommonSaleNumKey = \Our\NameConst::onlineGoodsCommonSaleNumPrefix;
$goodsCommonRedis->tableHDel($onlineGoodsCommonSaleNumKey,$goodsCommonId);
}
/**
......@@ -39,7 +62,7 @@ class GoodsCommonModel extends \DAO\AbstractModel {
* @return mixed
*/
public function getGoodsList($where,$field,$limit=array(),$order=array(),$attrStr=''){
$this->setDb();
$this->setDb($this->dbName);
$str = '$data = $this->db->select($field)->from($this->_tableName)';
if($attrStr){
$str .="->join('han_goods_attribute_value','han_goods_attribute_value.goods_commonid = han_goods_common.goods_commonid')";
......@@ -71,7 +94,7 @@ class GoodsCommonModel extends \DAO\AbstractModel {
* @return mixed
*/
public function getListWithSale($where,$field,$actIds,$limit=array(),$order=array(),$attrStr='',$online = true){
$this->setDb();
$this->setDb($this->dbName);
$str = "select ".$field." FROM ".$this->_tableName." LEFT JOIN (SELECT MIN(discount_price) discount_price,goods_commonid,goods_id FROM han_sale_goods where sale_act_id in(".implode(',',$actIds).") GROUP BY goods_commonid) a on (han_goods_common.goods_commonid = a.goods_commonid)";
if($attrStr){
$str .= "INNER JOIN han_goods_attribute_value ON han_goods_attribute_value.goods_commonid = han_goods_common.goods_commonid ";
......@@ -147,7 +170,7 @@ class GoodsCommonModel extends \DAO\AbstractModel {
}
public function getCount($where,$attrStr=''){
$this->setDb();
$this->setDb($this->dbName);
if($attrStr){
return $this->db->from($this->_tableName)->join('han_goods_attribute_value','han_goods_attribute_value.goods_commonid = han_goods_common.goods_commonid')->where($where)->where($attrStr)->fetchNum();
}
......@@ -181,19 +204,25 @@ class GoodsCommonModel extends \DAO\AbstractModel {
}
public function updateGoodsStorage($dataList){
public function updateGoodsStorage($dataList , $op = \Our\ApiConst::minus,$updateSaleNumFlag = false){
$datas = array_values($dataList);
$this->setDb(\Our\DbNameConst::masterDBConnectName);
$error = 0;
$baseSql = "UPDATE {$this->_tableName} set goods_storage = case goods_commonid ";
$updateAllSql = $baseSql;
$dataIds = array();
if($updateSaleNumFlag&&$op!=\Our\ApiConst::set){
$updateSaleNumOp = $op==\Our\ApiConst::minus?'+':'-';
}
for ($i = 0; $i < count($datas); $i++) {
$updateSql = \Our\Common::format(" WHEN {0} THEN goods_storage-{1} ", $datas[$i]['goodsCommonId'], $datas[$i]['goodsNum']);
$updateSql = \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);
}
$dataIds[] = $datas[$i]['goodsCommonId'];
$updateAllSql .= $updateSql;
$updateAllSql .= $updateSql;;
if ($i % 1000 == 0 && $i != 0) {
$updateAllSql .= \Our\Common::format('END where goods_commonid in ({0})',implode(',',$dataIds));
$updateAllSql .= \Our\Common::format(' where goods_commonid in ({0})',implode(',',$dataIds));
$one = $this->db->update($this->_tableName)->query($updateAllSql);
if (!$one) {
$error++;
......@@ -203,7 +232,7 @@ class GoodsCommonModel extends \DAO\AbstractModel {
}
}
if ($updateAllSql != $baseSql) {
$updateAllSql .= \Our\Common::format('END where goods_commonid in ({0})',implode(',',$dataIds));
$updateAllSql .= \Our\Common::format(' where goods_commonid in ({0})',implode(',',$dataIds));
$one = $this->db->update($this->_tableName)->query($updateAllSql);
if (!$one) {
......@@ -228,9 +257,9 @@ class GoodsCommonModel extends \DAO\AbstractModel {
*
* @return \DAO\UserModel
*/
public static function getInstance() {
public static function getInstance($dbName =\Our\DbNameConst::salveDBConnectName) {
if (!(self::$_instance instanceof self)) {
self::$_instance = new self();
self::$_instance = new self($dbName);
}
return self::$_instance;
......
......@@ -99,4 +99,14 @@ class AbstractModel extends \Redis\AbstractModel {
public function tableSRandMember($h,$count = null){
return $this->sRandMember($this->calcKey($h),$count);
}
public function tableHIncrBy($h,$key,$keysvalue){
return $this->hIncrBy($this->calcKey($h),$key,$keysvalue);
}
public function tableHExists($h,$key){
return $this->hExists($this->calcKey($h),$key);
}
public function tableHDel($h,$key){
return $this->hDel($this->calcKey($h),$key);
}
}
......@@ -188,20 +188,30 @@ $tcp_server->on('connect', function($serv, $fd) use($conf){
*/
$tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) {
// echo $data;
$data = json_decode($data, true);
if(empty($data['data']) && !isset($data['data'])){
//$data = json_decode($data, true);
// if(empty($data['data']) && !isset($data['data'])){
// $serv->send($fd, responseJson(1,"fail", ['method' => 'receive', 'error_code' => 1, 'status' => 0]));
// $serv->close($fd);
// return;
// }
if(empty($data) && !isset($data)){
$serv->send($fd, responseJson(1,"fail", ['method' => 'receive', 'error_code' => 1, 'status' => 0]));
$serv->close($fd);
return;
}
$s = json_encode($data['data']);
echo $s;
// $s = json_encode($data['data']);
echo $data;
// 推送 存入redis、最后入库(MySQL)
$redis=new Redis();
$redis->connect($conf['host'], $conf['port']);
if(!empty($conf['password'])){
$redis->auth($conf['password']);
}
$key=trim($data,"\r\n");
$data=$redis->get($key);
$redis->delete($key);
$data=json_decode($data,true);
if(true) {
$serv->send($fd, responseJson(1,"success", ['method' => 'receive', 'error_code' => 0, 'status' => 1]));
$serv->close($fd);
......@@ -234,6 +244,7 @@ $tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) {
} else {
$serv->send($fd, responseJson(1,'fromMsg',"fail", ['method' => 'receive', 'error_code' => 110,'status' => 0]));
}
unset($redis);
});
......
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